- /var/log/php8.1-fpm.log 에러 메시지, 웹 사이트 응답 안함
WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

 

   - 해결 방법

pm.max_children 설정 값을 늘린다.



     - 로그 확인
sudo cat /var/log/php8.1-fpm.log
sudo tail -n 1000 /var/log/nginx/error.log


     - 설정
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
     - 수정후 설정 적용(php-fpm재시작)
sudo systemctl restart php8.1-fpm


//-------------------------------------
     - free 메모리
$ free


     - 메모리 사용량 보기 - ps_mem
     ps_mem 설치
sudo pip3 install ps_mem


     - ps_mem 실행
sudo ps_mem
          - 프로세스 이름 뒤에 괄호 속 숫자가 프로세스 수

//-------------------------------------
     - php-fpm 평균 메모리 사용량
$ ps --no-headers -o "rss,cmd" -C php-fpm8.1 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
     -> 50M (40~80)

     nginx  평균 메모리 사용량
$ ps --no-headers -o "rss,cmd" -C nginx | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
     -> 5M


//-------------------------------------
< pm.max_children 적정값 계산 방법>


https://talk.plesk.com/threads/submitting-my-php-fpm-config-for-review-and-recommendations-please.367926/

https://serverfault.com/questions/939436/understand-correctly-pm-max-children-tuning

 

apache 는 255가 한계
- 가용 메모리 / 80M (1개 자식 프로세스가 사용하는 메모리 용량)
- 예) 1GB 가 가용한 경우 1000 / 80 = 12 

 


//-------------------------------------
pm (process manager) 옵션 설명
https://www.php.net/manual/en/install.fpm.configuration.php
     - /etc/php/8.1/fpm/pool.d/www.conf 설정 파일 옵션 설명

(pm=static)
: pm.max_children 수만큼 고정으로 생성

(pm=dynamic)
pm.max_children = 20
     - PHP_FCGI_CHILDREN 환경 변수
     - 최대 자식 프로세스(인스턴스) 수

pm.start_servers = 8
     - 시작 시 생성되는 하위 프로세스 수
     기본값: (min_spare_servers + max_spare_servers) / 2

pm.min_spare_servers = 5
     - 최소 유휴 서버 프로세스 수

pm.max_spare_servers = 10
     - 최대 유휴 서버 프로세스 수

;pm.max_spawn_rate = 32
     -  기본값: 32
     - 한 번에 하위 프로세스를 생성하는 속도 수

(pm=ondemand)
;pm.process_idle_timeout = 10초; (pm=ondemand)
; 기본값: 10초
- 유휴 프로세스가 종료 시키는 시간, 작을 수록 빠른 정리


pm.max_requests = 10000
     - 기본값: 0 , 
     - 환경변수 PHP_FCGI_MAX_REQUESTS 의 기능
     - 지정한 갯수의 실행을 한후 다시 생성됨, 메모리 누출 대비, 0이면 재생성 안함(무한 사용)
     - 5000 ~ 15000 추천



//-------------------------------------
리눅스 php-fpm 최적화 – pm.max_children 개수 결정
https://mytory.net/archives/13158

 

 

반응형
Posted by codens