서버 접속이 자주 안되어서 인터넷에 여러 팁을 참조해서 세팅값을 변경해주면서 서버 최적값을 찾아가는 중입니다.

하지만 서버관리가 처음이라서 어렵네요.

 

1. php-fpm의 에러 로그를 기록했습니다.

server reached max_children setting (320), consider raising it

/etc/php/7.0/fpm/pool.d/tobang.conf

php 사용유저의 php 세팅값입니다.

pm.max_children = 320
pm.start_servers = 12
pm.min_spare_servers = 12
pm.max_spare_servers = 24
pm.max_requests = 500

pm 관련된 세팅값인데. max_children 값을 기본세팅값인 9부터, 10, 32, 230, 그리고 지금 320까지 올려서 적었습니다.

 

이 글을 참조했습니다.

http://stackoverflow.com/questions/25097179/warning-pool-www-seems-busy-you-may-need-to-increase-pm-start-servers-or-pm

 

참고로 램 16기가 램을 사용 중이고, 6 코어 cpu 를 사용 중인 vps 서버입니다.

 

16기가를 MB로 변환하니, 16384가 나왔고 이 값을 평균 50MB로 나누어서 327.68 이 나와서 320으로 수정했습니다.

16384 * 0.7 한 값인, 11468 / 50 = 229.36 이 나와서 230으로 설정했던 거구요.

 

그렇게 해도~

server reached max_children setting (320), consider raising it

이렇게 뜨더군요. ㅠㅠ 그리고 서버가 접속이 안되고 있습니다.

 

ulimit, too many open files 관련 검색 등으로 갖은 설정값을 수정해봤습니다만 

아직 해결책을 못 찾았습니다. 도움 말씀 좀 부탁드립니다. ㅠ

 

 

 

  • Lv12
    서버 증설이라는 단어는 이시점에서 생각하시는 것입니다.
  • Lv37

    server reached max_children setting은 에러가 아닙니다. 정보성 메시지일 뿐이니 서버를 증설하든 DB를 튜닝하든 적당히 조치하시면 됩니다. 단, 늘려서는 안됩니다. 늘려달라고 자꾸 징징거려도 쌩깔 줄 알아야 합니다. 에러메시지와 단순 정보성 메시지를 구분할 줄 아는 것이 튜닝의 첫걸음입니다.

    생각해 보세요. CPU 코어는 6개밖에 없는데 320개의 PHP 스크립트를 동시에 실행할 수 있을 리가 없잖아요. 프로세스가 너무 많으면 과부하가 걸리고, 과부하가 걸리면 현재 실행중인 프로세스들이 빨리 처리를 못하니까 새 프로세스를 더 많이 생성하게 되고, 그러면 더 과부하가 걸리고... 악순환입니다. 차라리 프로세스 숫자를 확 줄여서 빨리빨리 처리하고 다음 스크립트를 실행할 수 있도록 해주는 편이 낫습니다. 메모리는 넉넉한데 CPU가 빈약한 대부분의 가상서버에서 매우 중요한 문제입니다. 메모리가 아무리 많아도 CPU 코어(쓰레드) 수 × 4 이상은 무리가 될 수 있어요. 만약 이것으로 부족하다면 설정값을 무작정 늘리지 말고 서버 사양을 높여야 합니다.

    제가 관리를 돕고 있는 사이트들 중 하나에 어제 개표방송 도중 최대 7천 명의 동접자가 몰렸습니다. 20코어 40쓰레드, 메모리 64기가짜리 서버입니다. pm.max_children 100으로 잘 버텼습니다.

  • Lv37 Lv12
    시퓨나 램 과부화 발생시 vps 와 실서버간의 차이가 있는것 같습니다.
    제 느낌상인지 모르겠으나
    vps 는 그냥 뭔가 프로세스가 다운되어 버려서 서버프로그램중 하나가 망가지거나 stop 됩니다.
    반면 실서버의 경우 버텨줍니다.
    이게 말씀하시는 설정(튜닝)의 차이인지는 섭알못이라 패스입니다.
    운영중인 서버가 실서버도 있고 vps 도 있어서 속상한 경우가 있습니다.
    속 시원히 한마디 부탁드립니다.
  • Lv12 Lv37

    램이 부족하면 스왑으로 넘어가는데, VPS에서 스왑을 쓰면 디스크를 어마어마하게 벅벅 긁기 때문에 완전히 다운되거나 정지먹을 가능성이 높습니다. 안 그래도 컴퓨터에서 가장 느린 부품이 디스크인데 이걸 여러 VPS가 공유하려다 보니 IOPS가 심하게 딸려요. 스왑으로 들어가면 ssh 로그인조차 안 되는 일이 흔합니다. 요즘 나오는 SSD 상품은 조금 낫긴 하지만, 평소에도 IOPS가 부족하기 때문에 캐시를 위한 램도 넉넉하게 남겨둬야 하고요.

    VPS를 안정적으로 운영하려면 PHP, DB 등이 사용하는 램 용량이 최악의 경우에도 전체의 70~80%를 초과할 수 없도록 프로세스 갯수와 버퍼 크기 등을 제한해 놓는 것이 좋습니다. (/proc/meminfo에서 Committed_AS 기준) 이것만 잘 지키면 과부하가 걸려도 많이 느려질 뿐, 아예 다운되는 일은 드물 거예요.

    CPU도 너무 많이 쓰면 정지시켜 버리는 업체가 종종 있습니다. 특히 core share 상품이 그렇죠.