기사 디렉토리
이런 상황을 겪어본 적이 있나요?웹사이트 접속이 갑자기 느려지거나 심지어 500 오류가 발생하기도 했습니다. PHP-FPM을 재시작한 후 정상으로 돌아왔습니다.하지만 시간이 지나면서 문제가 다시 나타나나요? 너무 짜증나!
왜 이런 일이 발생합니까?사실, 이것은 보통PHP-FPM 프로세스 풀이 올바르게 구성되지 않았거나, 서버 리소스가 부족합니다.에 의해 발생함. 오늘은 철저히 최적화 하겠습니다. 헤스티아CP PHP-FPM을 설치하면 웹사이트가 바위처럼 안정됩니다!
PHP-FPM이 과부하되는 핵심 이유
PHP-FPM은프로세스 관리자동적 요청을 처리하는 역할을 합니다. 구성이 적절하지 않으면 다음과 같은 문제가 발생할 수 있습니다.
- 서버 리소스가 소진되었습니다이로 인해 PHP-FPM이 새로운 요청에 적시에 응답할 수 없게 되었습니다.
- 프로세스가 너무 적습니다트래픽이 갑자기 늘어나면 제때 처리할 수 없습니다.
- 프로세스 사용량이 너무 높습니다, CPU 부하가 폭발적으로 증가합니다.

PHP-FPM이 과부하되었는지 어떻게 알 수 있나요?
사용할 수 있습니다 top 或 htop CPU 및 메모리 사용량을 보는 명령:
top -c
다음과 유사한 프로세스 정보가 표시되면 PHP-FPM이 높은 부하에서 실행 중이라는 의미입니다.
1669293 abc 20 0 790284 227880 185568 R 73.1 0.9 1:30.09 php-fpm: pool chenweiliang.com
1669522 abc 20 0 801924 224224 170236 R 69.9 0.9 0:59.01 php-fpm: pool chenweiliang.com
이 프로세스가 CPU의 70% 이상을 차지하는 것을 보시나요? 이런 일이 자주 발생하면 PHP-FPM 문제가 있을 것이다!
그러면 서버에 더 이상 과부하가 걸리지 않도록 PHP-FPM 구성을 최적화하려면 어떻게 해야 할까요?
PHP-FPM 프로세스 풀 최적화(핵심 매개변수 조정)
첫째, 오픈 php-fpm 配置文件:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *PHP8.3과 같은 PHP 버전을 다음과 같이 변경하세요.
/etc/php/8.3/fpm/pool.d/www.conf
HestiaCP가 설정한 PHP 버전을 쿼리합니다.
v-list-web-domain user domain.com
예 :
v-list-web-domain abc chenweiliang.com
출력에서 다음과 같은 내용이 표시됩니다.
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
이는 사이트에서 다음을 사용한다는 것을 의미합니다. PHP 8.3.
PHP-FPM 구성을 살펴보겠습니다.
[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660
user = abc
group = abc
pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s
당신은 당신의 것을 볼 수 있습니다 pm 사용된 것은 ondemand,유휴 시간 동안 리소스 사용량을 줄일 수 있지만 트래픽이 갑자기 늘어나면 프로세스가 제때 응답하지 못할 수 있습니다., 결과적으로 500 오류가 발생합니다.
1. PHP-FPM 프로세스 풀 매개변수 조정
구성에서 사용하는 경우 dynamic일부 업무 프로세스를 미리 시작하고 요청량에 따라 동적으로 조정하는 방식으로, 요청량이 갑자기 늘어나도 더 빠르게 대응할 수 있습니다.
일정량의 트래픽이 있는 웹사이트의 경우, 다음을 사용하는 것이 좋습니다. pm = dynamic높은 동시성 중에 일정량의 유휴 프로세스를 유지하고 500개의 오류를 방지할 수 있기 때문입니다.
접근 볼륨이 매우 낮고 메모리 리소스가 부족한 경우에만 사용하는 것이 좋습니다. pm = ondemand 자원을 절약하기 위해서.
변경하는 것이 좋습니다 ondemand, 최적화 pm.max_children 그리고 다른 매개변수:
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
왜 이렇게 바꾸고 싶은가요?
pm = dynamic: 온디맨드로 인해 발생할 수 있는 요청 대기를 피하기 위해 프로세스를 더 유연하게 할당합니다.pm.max_children = 16: 프로세스가 너무 적어서 발생하는 500 오류를 방지합니다.pm.start_servers = 5: 느린 프로세스 시작을 방지합니다.pm.max_requests = 3000:메모리 누수 방지, 정기적으로 이 과정을 재활용하세요.
2. PHP 스크립트의 실행 시간을 제한하여 장기 점유를 방지합니다.
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
이렇게 하면 일부를 방지할 수 있습니다.CPU를 너무 많이 사용하는 PHP 스크립트는 서버를 다운시킬 수 있습니다..
저장 후 PHP 프로세스를 다시 시작합니다.
sudo systemctl restart php8.3-fpm언제든지 진행 상황을 추적하려면 PHP-FPM 상태 모니터링을 활성화하세요.
PHP-FPM 프로세스 모니터링을 활성화하고 언제든지 확인하세요현재 활성 프로세스 수 및 요청 대기 상태서버 과부하를 피하기 위해서.
在 php-fpm.conf 추가됨:
pm.status_path = /status
그 다음, Nginx 구성:
location /status {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
이런 식으로 당신은 할 수 있습니다 http://yourdomain.com/status PHP-FPM이 실제로 어떻게 활용되는지 확인해 보세요!
PHP-FPM 로그를 최적화하여 문제를 빠르게 해결하세요
在 php-fpm.conf 첨부:
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s ; 执行超过 5s 的脚本记录到日志
이런 식으로 500 오류가 발생할 때마다 로그를 직접 볼 수 있습니다.
tail -f /var/log/php-fpm/error.log
PHP가 다음과 같은 오류를 보고하는지 확인하세요. out of memory,script execution timeout 기다림.
메모리 누수를 방지하려면 PHP-FPM을 정기적으로 다시 시작하세요.
통과 할 수있다 cron 장기 실행 프로세스로 인한 문제를 방지하려면 PHP-FPM을 정기적으로 다시 시작하세요.메모리 누수.
crontab -e
매일 오전 3시에 PHP-FPM을 자동으로 다시 시작하는 다음 예약된 작업을 추가합니다.
0 3 * * * /usr/sbin/service php8.3-fpm restart
문제가 지속되면 어떻게 되나요? 더욱 최적화되었습니다!
위의 최적화를 계속 따르고 있다면가끔 500 오류가 발생합니다다음 최적화를 계속할 수 있습니다.
1. OPcache를 활성화하여 PHP 실행 효율성을 개선합니다.
아직 OPcache가 활성화되지 않았다면 다음과 같이 설치할 수 있습니다(예: Ubuntu):
sudo apt install php8.3-opcache -y
그런 다음 편집 php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
효과? PHP 페이지 실행 속도가 크게 향상되었습니다!
2. Nginx 구성 최적화
Nginx 관련 매개변수가 합리적인지 확인하세요. fastcgi_read_timeout Nginx가 긴 실행 시간으로 인해 PHP 스크립트를 종료하는 것을 방지하기 위해 적절히 조정하세요.
fastcgi_read_timeout 60s;
client_max_body_size 100M;
요약: PHP-FPM을 최적화하면 웹사이트가 더 이상 중단되지 않습니다!
이러한 최적화 이후 어떤 조정을 했나요?
✅ PHP-FPM 프로세스 풀 최적화,사용하다 ondemand그리고 최적화하다 pm.max_children 매개변수;
✅ PHP 스크립트 실행 시간 제한, 장기간 CPU 점유를 방지합니다.
✅ PHP-FPM 모니터링 활성화실시간으로 프로세스 부하를 확인하세요.
✅ PHP-FPM 로그 최적화, 500개 오류를 빠르게 해결합니다.
✅ PHP-FPM을 정기적으로 다시 시작하세요, 메모리 누수를 방지합니다.
✅ OPcache 활성화PHP 실행 효율성을 향상시킵니다.
✅ Nginx 구성 최적화, 시간 초과 문제를 방지합니다.
이러한 최적화를 거치면 PHP-FPM 부하가 크게 줄어들고 웹사이트 운영이 더욱 안정적으로 이루어질 것입니다! 🔥
지금 당장 시도해보세요! 💪🚀
희망 첸 웨이량 블로그( https://www.chenweiliang.com/ )가 "HestiaCP PHP-FPM 부하가 너무 높습니까? 동적 웹 페이지 500 오류? 이 최적화는 즉시 적용됩니다! ”이 도움이 될 수도 있습니다.
이 기사의 링크를 공유하는 것을 환영합니다:https://www.chenweiliang.com/cwl-32512.html
더 많은 숨겨진 트릭을 알아보려면🔑 Telegram 채널에 가입하세요!
마음에 드셨다면 공유하고 좋아요를 눌러주세요! 여러분의 공유와 좋아요는 저희의 지속적인 원동력이 됩니다!