- /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://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
'Code > PHP' 카테고리의 다른 글
재부팅시 라라벨 에러 로그 발생하는 문제 해결 방법 (0) | 2023.12.27 |
---|---|
[php 웹보안] 이중 인코딩( Double encoding) 공격 방법과 대책 (0) | 2022.11.23 |
php 8.1 설치 (ubuntu) (0) | 2022.08.03 |
[Laravel] SiteMap 만들기 (0) | 2022.05.15 |
[Laravel] Horizon 로그 로테이션(순환) (0) | 2022.05.09 |