이온디
이온디

VPS 서버 운영 중 502 Bad Gateway 문제

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]


댓글
현재 댓글이 0 개 달려있습니다.
댓글 남기기
  • 닉네임을 적어주세요.

    두자 이상 적어주세요.

    필수 입력 항목 입니다.

    실패했습니다.

  • 비밀번호를 적어주세요.

    안전을 위해 가급적 패스워드는
    8자이상으로 적어주세요.

    필수 입력 항목 입니다.

    실패했습니다.

당신의 글쓰기를 스마트하게.
글을 써보시겠습니까?

글쓰기

현재 55 개의 글이 작성 되어 있습니다.

Find Account
  • 이메일 주소로 계정 찾기

    아이디/비밀번호는 가입시 등록한 메일 주소로 알려드립니다. 가입할 때 등록한 메일 주소를 입력하고 "ID/PW 찾기" 버튼을 클릭해주세요.

  • 이메일 주소

    이메일 주소 형식이 올바르지 않습니다.

  • 인증메일 재발송

    인증 메일을 받지 못한 경우 다시 받을 수 있습니다.

  • 이메일 주소

    이메일 주소 형식이 올바르지 않습니다.