HestiaCP PHP-FPM에 과부하가 걸리나요? 동적 웹 페이지 500 오류? 이 최적화는 즉시 적용됩니다!

이런 상황을 겪어본 적이 있나요?웹사이트 접속이 갑자기 느려지거나 심지어 500 오류가 발생하기도 했습니다. PHP-FPM을 재시작한 후 정상으로 돌아왔습니다.하지만 시간이 지나면서 문제가 다시 나타나나요? 너무 짜증나!

왜 이런 일이 발생합니까?사실, 이것은 보통PHP-FPM 프로세스 풀이 올바르게 구성되지 않았거나, 서버 리소스가 부족합니다.에 의해 발생함. 오늘은 철저히 최적화 하겠습니다. 헤스티아CP PHP-FPM을 설치하면 웹사이트가 바위처럼 안정됩니다!

PHP-FPM이 과부하되는 핵심 이유

PHP-FPM은프로세스 관리자동적 요청을 처리하는 역할을 합니다. 구성이 적절하지 않으면 다음과 같은 문제가 발생할 수 있습니다.

  • 서버 리소스가 소진되었습니다이로 인해 PHP-FPM이 새로운 요청에 적시에 응답할 수 없게 되었습니다.
  • 프로세스가 너무 적습니다트래픽이 갑자기 늘어나면 제때 처리할 수 없습니다.
  • 프로세스 사용량이 너무 높습니다, CPU 부하가 폭발적으로 증가합니다.

HestiaCP PHP-FPM에 과부하가 걸리나요? 동적 웹 페이지 500 오류? 이 최적화는 즉시 적용됩니다!

PHP-FPM이 과부하되었는지 어떻게 알 수 있나요?

사용할 수 있습니다 tophtop 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 부하가 크게 줄어들고 웹사이트 운영이 더욱 안정적으로 이루어질 것입니다! 🔥

지금 당장 시도해보세요! 💪🚀

发表 评论

귀하의 이메일 주소는 공개되지 않습니다. 必填 项 已 用 * 标注

위쪽으로 스크롤