Extra Form
PHP PHP 7.4
CMS WordPress

안녕하세요.

 

작은 VPS 서버에 워드프레스 웹사이트 몇 개를 동시에 돌리고 있습니다.

 

어제 php에서의 [pool www] server reached pm.max_children setting (30), consider raising it 오류에 관해 

 

문의글을 남겼었습니다.

 

그리고 나서 제가 지금까지 얼마나 램을 낭비하면서 서버를 알게되었는데요...

 

서버 설정을 바꾸다 보니 해결 방법을 찾을 수가 없는게 몇 개 있어서 질문을 남기게 되었습니다.

 

1) php-fpm에서 pm = dynamic 으로 설정을 하고 max, min 값을 설정해 두게 되면

 

이걸 ondemend 처럼 방문자가 적을때 불필요한 php 프로세서가 자동으로 종료되게 할 수는 없는건가요?

 

몇 번 테스트를 해봤습니다만 늘 pm.max_spare_servers 값으로 php-fpm의 프로세서 수가 맞춰집니다..

 

2) 서버 램 용량의 약 60%를 innodb에 주고, 최대 동접자 수에 따라 php-fpm이나 다른 프로세서 까지 고려했을때도 

 

남는 램 용량이 있는 경우에는 남는 용량은 어디에 추가로 주는게 성능 향상에 도움이 되는지도 궁금합니다.

 

늘 많이 배우고 있습니다. 정말 감사합니다.

 

 

  • profile
    램 공간이 작나요?
  • profile ?
    안녕하세요 라엘님.

    네. VPS 서버를 두개 사용하고 있는데, 하나는 1G 하나는 4G 밖에 안됩니다 ;;

    동시 접속자 수도 그리 많지 않은데 php-fpm이 피크 타임을 기준으로 프로세서가 유지되는게

    램 낭비인것 같아, 이걸 다른 방법으로 활용할 수 없을까? 해서 글을 올렸네요.
  • profile

    1. 의미 없습니다. max 상태에서도 메모리가 부족하지 않도록 튜닝해야 하니까요. 아무 것도 안 하는 프로세스가 몇 개 남아 있는 것보다, 프로세스를 자주 껐다 켰다 하는 것이 더 비효율적일 수도 있습니다. 저는 그냥 pm = static으로 돌리기도 합니다.

    2. DB와 PHP-FPM에 각각 적당히 할당하고도 남는 RAM이 있다면 그냥 놔두는 것이 상책일 가능성이 높습니다. 남는 RAM은 리눅스 커널이 자주 사용하는 파일이나 디렉토리 구조 등을 캐싱하는 데 활용하니까요. 컴퓨터에서 가장 느린 부분이 디스크이기 때문에, 커널 전문가가 아닌 일반 운영자 입장에서 디스크에 있는 데이터를 캐싱하는 것보다 더 효율적인 RAM 활용 방법을 찾기는 쉽지 않아요. (단, apcu, opcache, memcached 등 어플리케이션 성능을 크게 향상시킬 수 있는 캐시 용량은 따로 할당해 두는 것이 좋습니다.)

  • profile ?

    안녕하세요 기진곰님. 그렇군요. 실제로 ondemend와 dynamic을 테스트 해보았습니다만,

    저는 프로세서 몇 개가 늘 켜져있는것과 필요할때만 켜지는게 큰 차이가 있을까?

    싶었습니다만... 모든 방문자의 속도를 측정하도록 GA 설정을 바꾼 후 12시간 정도 돌려보니

    생각보다 차이가 나더군요 ;;;

    정말 필요한 부분에 다 배정하면 남는 램은 그냥 놔두는 것도 좋은 방법이군요. 조언 감사합니다!!

  • ? profile

    ondemand는 차이 많이 나죠. 아무 것도 없는 상태에서 pool 설정에 맞는 환경을 새로 구성하고 그 안에 프로세스를 만드는 것과, 이미 있는 프로세스를 fork하여 하나 더 만드는 것은 차원이 다른 작업이니까요.

    웹호스팅처럼 사이트가 굉장히 많은 서버라면 각각 프로세스 1개씩만 돌아가도 너무 많아지기 때문에 어쩔 수 없이 ondemand를 사용하기도 합니다만, 가능하면 pool마다 1개씩은 상시 유지하는 것이 좋습니다.

     

    아, 그리고 PHP-FPM이 사용하는 RAM은 대부분 프로세스들 사이에 공유되기 때문에 (SHR로 표시됨) 평소에 유지하는 프로세스 수를 줄인다고 RAM 사용량이 눈에 띄게 줄어들지도 않습니다.

  • profile

    우선 php-fpm의 children 하나당 메모리를 얼마나 잡아먹고 있는지를 알아야겠죠. (php 버전에 따라 숫자를 바꿔주세요)
    % ps -C php-fpm8.1 -o rss=
    로 나오는 숫자가 KB단위 메모리 양인데, 평균이 얼마인지를 알아야 max_children 숫자를 정할수 있겠죠.

     

    총 메모리가 4GB면 php-fpm 아이 30명 만들기 부족하겠네요. 즉, (남는게 없을테니) 남는 램을 어디다 쓸지 고민할 필요가 없다는...