Məqalələr kataloqu
- 1 PHP-FPM-nin həddindən artıq yüklənməsinin əsas səbəbi
- 2 PHP-FPM proses hovuzunun optimallaşdırılması (əsas parametrlərin tənzimlənməsi)
- 3 İstənilən vaxt tərəqqi izləmək üçün PHP-FPM status monitorinqini aktivləşdirin
- 4 Problemləri tez həll etmək üçün PHP-FPM qeydlərini optimallaşdırın
- 5 Yaddaş sızmasının qarşısını almaq üçün müntəzəm olaraq PHP-FPM-i yenidən başladın
- 6 Bəs problem davam edərsə? Əlavə optimallaşdırma!
- 7 Xülasə: PHP-FPM-i optimallaşdırın və vebsayt artıq qəzaya uğramayacaq!
Bu vəziyyətlə heç qarşılaşmısınızmı?Vebsayta giriş qəfil yavaşladı və ya hətta 500 xəta ilə nəticələndi, PHP-FPM-i yenidən başlatdıqdan sonra normal vəziyyətə qayıtdı., lakin problem bir müddət sonra yenidən görünür? Bu çox sinir bozucudur!
Niyə bu baş verir?Əslində, bu, adətənPHP-FPM proses hovuzu düzgün konfiqurasiya edilməyib və ya server resursları kifayət deyil.səbəb olur. Bu gün biz hərtərəfli optimallaşdıracağıq HestiaCP Başlıq altındakı PHP-FPM veb saytı qaya kimi sabit edir!
PHP-FPM-nin həddindən artıq yüklənməsinin əsas səbəbi
PHP-FPM aProses Meneceri, dinamik sorğuların idarə edilməsinə cavabdehdir. Konfiqurasiya ağlabatan deyilsə, bu, aşağıdakılara səbəb ola bilər:
- Server resursları tükənib, PHP-FPM-nin yeni sorğulara vaxtında cavab verə bilməməsinə səbəb olur;
- Çox az proseslər, trafik qəfil artdıqda, onu vaxtında emal etmək mümkün deyil;
- Prosesdən istifadə çox yüksəkdir, CPU yükünün partlamasına səbəb olur.

PHP-FPM-in həddən artıq yükləndiyini necə müəyyən etmək olar?
istifadə edə bilərsiniz top Və ya htop CPU və yaddaş istifadəsinə baxmaq üçün əmr:
top -c
Aşağıdakılara bənzər proses məlumatını görürsünüzsə, bu o deməkdir ki, PHP-FPM yüksək yük altında işləyir:
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
Görün bu proseslər CPU-nun 70%-dən çoxunu necə tutur? Bu tez-tez baş verirsə, PHP-FPM Problem olmalıdır!
Beləliklə, serverin artıq yüklənməməsi üçün PHP-FPM konfiqurasiyasını necə optimallaşdıra bilərik?
PHP-FPM proses hovuzunun optimallaşdırılması (əsas parametrlərin tənzimlənməsi)
Birincisi, açın php-fpm Konfiqurasiya Faylları:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *PHP8.3 kimi PHP versiyanıza dəyişin və bunu belə dəyişin:
/etc/php/8.3/fpm/pool.d/www.conf
HestiaCP tərəfindən təyin edilmiş PHP versiyasını sorğulayın
v-list-web-domain user domain.com
Məsələn:
v-list-web-domain abc chenweiliang.com
Çıxışda belə bir şey görəcəksiniz:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Bu o deməkdir ki, vebsayt istifadə edir PHP 8.3.
PHP-FPM konfiqurasiyanıza nəzər salaq:
[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
Siz görə bilərsiniz ki, sizin pm İstifadə olunandır ondemand,Boş vaxtlarda resurs istifadəsini azalda bilsə də, trafik qəfil artdıqda, proses vaxtında cavab verə bilməyə bilər., nəticədə 500 səhv.
1. PHP-FPM proses hovuz parametrlərini tənzimləyin
Əgər konfiqurasiya istifadə edirsə dynamicBu, bəzi iş proseslərinin əvvəlcədən başlaması və sorğunun həcminə uyğun olaraq onları dinamik şəkildə tənzimləmək üsuludur, sorğunun həcmi qəfil artdıqda daha sürətli cavab verə bilər.
Müəyyən miqdarda trafikə malik veb saytlar üçün istifadə etmək tövsiyə olunur pm = dynamicÇünki o, müəyyən miqdarda boş prosesləri saxlaya bilir və yüksək paralellik zamanı 500 səhvdən qaça bilir.
Yalnız giriş həcmi son dərəcə aşağı olduqda və yaddaş resursları sıx olduqda istifadə etmək tövsiyə olunur. pm = ondemand Resurslara qənaət etmək üçün.
Təklif olunur ondemand, və optimallaşdırın pm.max_children Və digər parametrlər:
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 后自动退出
Niyə bunu belə dəyişmək istəyirsən?
pm = dynamic: Tələb nəticəsində yarana biləcək sorğu gözləməsinin qarşısını almaq üçün prosesləri daha çevik şəkildə ayırın;pm.max_children = 16: Çox az proseslərin səbəb olduğu 500 səhvin qarşısını almaq;pm.start_servers = 5: Prosesin yavaş başlamasından çəkinin;pm.max_requests = 3000:Yaddaş sızmasının qarşısının alınması, prosesi müntəzəm olaraq təkrar emal edin.
2. Uzunmüddətli istifadənin qarşısını almaq üçün PHP skriptlərinin icra müddətini məhdudlaşdırın
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
Bu, bəzilərinin qarşısını ala bilərHəddindən artıq CPU istifadə edən PHP skriptləri serverinizi sıradan çıxara bilər.
Yadda saxladıqdan sonra PHP prosesini yenidən başladın:
sudo systemctl restart php8.3-fpmİstənilən vaxt tərəqqi izləmək üçün PHP-FPM status monitorinqini aktivləşdirin
PHP-FPM prosesinin monitorinqini aktivləşdirin və istənilən vaxt ona baxınAktiv proseslərin cari sayı və sorğu gözləmə statusu, serverin həddən artıq yüklənməsinin qarşısını almaq üçün.
在 php-fpm.conf Əlavə edilib:
pm.status_path = /status
Sonra, Nginx konfiqurasiyası:
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;
}
Bu şəkildə edə bilərsiniz http://yourdomain.com/status Fəaliyyətdə PHP-FPM-i yoxlayın!
Problemləri tez həll etmək üçün PHP-FPM qeydlərini optimallaşdırın
在 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 的脚本记录到日志
Beləliklə, hər dəfə 500 xətası baş verdikdə, jurnala birbaşa baxa bilərsiniz:
tail -f /var/log/php-fpm/error.log
PHP-nin xəta haqqında məlumat verib-vermədiyinə baxın, məsələn out of memory,script execution timeout Gözləmək.
Yaddaş sızmasının qarşısını almaq üçün müntəzəm olaraq PHP-FPM-i yenidən başladın
keçə bildi cron Uzun müddət davam edən proseslərin səbəb olmasının qarşısını almaq üçün PHP-FPM-i müntəzəm olaraq yenidən başladınYaddaş Sızmaları.
crontab -e
Hər gün səhər saat 3-də PHP-FPM-i avtomatik yenidən başlatmaq üçün aşağıdakı planlaşdırılmış tapşırığı əlavə edin:
0 3 * * * /usr/sbin/service php8.3-fpm restart
Bəs problem davam edərsə? Əlavə optimallaşdırma!
Əgər hələ də yuxarıdakı optimallaşdırmaya əməl edirsinizsəBəzən 500 səhv baş verir, aşağıdakı optimallaşdırmalarla davam edə bilərsiniz:
1. PHP icra effektivliyini artırmaq üçün OPcache-i aktivləşdirin
OPcache hələ işə salınmayıbsa, onu bu şəkildə quraşdıra bilərsiniz (nümunə olaraq Ubuntu istifadə edərək):
sudo apt install php8.3-opcache -y
Sonra redaktə edin php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
Effekt? PHP səhifəsinin icra sürəti çox yaxşılaşdırıldı!
2. Nginx konfiqurasiyasının optimallaşdırılması
Nginx ilə əlaqəli parametrlərin ağlabatan olduğundan əmin olun, məsələn fastcgi_read_timeout Uzun icra müddətinə görə PHP skriptlərinin Nginx tərəfindən dayandırılmasının qarşısını almaq üçün onu müvafiq şəkildə tənzimləyin:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
Xülasə: PHP-FPM-i optimallaşdırın və vebsayt artıq qəzaya uğramayacaq!
Bu optimallaşdırmadan sonra hansı düzəlişlər etdik?
✅ PHP-FPM proses hovuzunun optimallaşdırılması, istifadə edin ondemandVə optimallaşdırın pm.max_children parametr;
✅ PHP skriptlərinin icra müddətinin məhdudlaşdırılması, uzunmüddətli CPU işğalının qarşısını almaq üçün;
✅ PHP-FPM monitorinqini aktivləşdirin, real vaxt rejimində proses yükünü görmək;
✅ PHP-FPM qeydlərinin optimallaşdırılması, 500 səhvin tez bir zamanda aradan qaldırılması;
✅ PHP-FPM-i müntəzəm olaraq yenidən başladın, yaddaş sızmasının qarşısını almaq;
✅ OPcache-i aktivləşdirin, PHP icrasının səmərəliliyini artırmaq;
✅ Nginx konfiqurasiyasının optimallaşdırılması, vaxt aşımı problemlərindən qaçınmaq üçün.
Bu optimallaşdırmadan sonra PHP-FPM yükü xeyli azalacaq və veb saytın fəaliyyəti daha stabil olacaq! 🔥
İndi cəhd edin! 💪🚀
Hope Chen Weiliang Blogu ( https://www.chenweiliang.com/ ) paylaşdı "HestiaCP PHP-FPM yükü çox yüksəkdir? Dinamik veb səhifə 500 xətası? Bu optimallaşdırma dərhal qüvvəyə minəcək! ”, sizin üçün faydalı ola bilər.
Bu məqalənin linkini paylaşmağa xoş gəlmisiniz:https://www.chenweiliang.com/cwl-32512.html
Daha çox gizli hiylələri açmaq üçün🔑 Telegram kanalımıza qoşulmağa xoş gəlmisiniz!
Bəyəndinizsə paylaşın və bəyənin! Paylaşımlarınız və bəyənmələriniz bizim davamlı motivasiyamızdır!