cpanel 지원되는 해외호스팅으로 웹호스팅 관리만 하다, 최근에야 VPS 설치며 관리를 하는 초짜 VPS 가상서버호스팅관리자입니다.
두세달 됐나 봅니다. 서버 비용으로 이미 수십만원어치 내고 있고 오류도 그간 숱하게 많이 접했습니다. ㅠㅠ
그래도 아직 잘 몰라 할 때마다 찾아보곤 합니다.
XE 설정의 문제, Nginx의 설정문제, PHP 설정문제, MySQL 설정문제, 호스팅사의 문제 등 다양하게 있을 수 있는데,
XE 경우는
기진곰님이 만드신 에러기록모듈이 있습니다.
http://helloitstory.tistory.com/206
다운로드 : https://github.com/kijin/xe-errorlogger/archive/master.zip
라이믹스는 자체적으로 에러 체크하는 게 있다고 합니다.
Nginx 경우는,
/etc/nginx/conf.d/userdomain.conf
에서
server { ... error_log /home/user/log/userdomain.com.error.log crit; ... }
이런 식으로 하면 로그가 해당 경로에 쌓이면 해당 유저의 사이트 에러 로그를 살펴볼 수가 있고
/var/log/nginx/error.log 에서도 서버의 에러로그를 살펴볼 수가 있습니다.
php 경우는,
/var/log/php7.0-fpm.log
에서 살펴볼 수가 있습니다.
주로 사용자가 많아지면 이런 로그들을 볼 수가 있더군요.
server reached pm.max_children setting (9), consider raising it
seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 8 total children
동접수 2천명 정도가 되는 서버의 설정은 아래와 같습니다.
;pm = dynamic ;pm.max_children = 9 ;pm.start_servers = 3 ;pm.min_spare_servers = 2 ;pm.max_spare_servers = 4 pm = ondemand pm.max_children = 230 pm.start_servers = 16 pm.min_spare_servers = 16 pm.max_spare_servers = 32 pm.max_requests = 500
vps 사양은 다음과 같습니다.
CPU : 8 vCore / RAM : 32GB
최근 문제가 생긴 VPS의 경우는
CPU : 4 vCore / RAM : 8GB
그럼 이 부분을 어떻게 설정하면 되는지 한번 찾아봤습니다.
Nginx, PHP-FPM에서 child process 개수 결정하기
http://yumere.tistory.com/81
제 경우는 PHP7.0-FPM 으로 운영하고 있어서 이렇게 입력하면 됩니다.
# ps -ylC php-fpm7.0 --sort:rss
그러니깐 각 processor 당 8MB 정도를 사용하고 있더군요.
# ps --no-headers -o "rss,cmd" -C php-fpm7.0 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"Mb") }'
위의 정보를 이용해서, PHP-FPM으로 사용가능한 memory / Processor 당 메모리 사용량으로 나누면 pm.max_children 개수를 정할 수 있다. 출처: http://yumere.tistory.com/81 [Yumere]
저는 이렇게 하니 18MB로 나오더군요.
그럼 서버에서 8GB의 램에서 적어도 1.5를 빼주면, 6.5GB 입니다.
6656MB / 18MB = 369.xx
기본적으로 테스트 사이트로 돌아가는 것도 있고 하니, 대충 저기 설정값과 동일하게 설정해주었습니다. -_-;
pm.max_children = 130
pm.start_servers = 30
pm.min_spare_servers = 30
pm.max_spare_servers = 100
pm.max_requests = 500
출처: http://yumere.tistory.com/81 [Yumere]