pelrêça gotarê
- 1 Sedema bingehîn çima PHP-FPM zêde ye
- 2 Optimîzasyona hewzê ya pêvajoya PHP-FPM (verastkirina parametreya bingehîn)
- 3 Çavdêriya statûya PHP-FPM çalak bike da ku di her kêliyê de pêşveçûnê bişopîne
- 4 Têketinên PHP-FPM xweşbîn bikin da ku zû pirsgirêkan çareser bikin
- 5 PHP-FPM-ê bi rêkûpêk ji nû ve bidin destpêkirin da ku pêşî li derketina bîranînê bigirin
- 6 Heke pirsgirêk berdewam bike? Optimîzasyona bêtir!
- 7 Kurte: PHP-FPM-ê xweşbîn bikin û malper êdî têk diçe!
Hûn qet rastî vê rewşê hatine?Gihîştina malperê ji nişka ve hêdî bû, an jî di encamê de xeletiyek 500 derket Piştî destpêkirina PHP-FPM-ê, ew vegeriya normalê., lê pirsgirêk piştî demekê dîsa derdikeve? Ev pir xemgîn e!
Çima ev diqewime?Bi rastî, ev bi gelemperî yeHewza pêvajoyê ya PHP-FPM bi rêkûpêk nehatiye mîheng kirin, an çavkaniyên serverê têrê nakin.ji ber. Îro, em ê bi tevahî xweşbîn bikin HestiaCP PHP-FPM di bin serpêhatiyê de malperê wekî kevirek aram dike!
Sedema bingehîn çima PHP-FPM zêde ye
PHP-FPM aRêveberê Pêvajoyê, ya ku ji bo birêvebirina daxwazên dînamîkî berpirsiyar e. Ger veavakirin ne maqûl be, dibe ku bibe sedema:
- Çavkaniyên serverê qediyane, dibe sedem ku PHP-FPM nikaribe di wextê xwe de bersivê bide daxwazên nû;
- Pêvajoyên pir kêm, gava ku seyrûsefer ji nişka ve zêde dibe, ew di wextê de nayê pêvajo kirin;
- Bikaranîna pêvajoyê pir zêde ye, dibe sedem ku barkirina CPU biteqe.

Meriv çawa bibêje ka PHP-FPM zêde barkirî ye?
dikarin bikar bînin top 或 htop Fermana dîtina karanîna CPU û bîranînê:
top -c
Ger hûn agahdariya pêvajoyê mîna ya jêrîn dibînin, ev tê vê wateyê ku PHP-FPM di bin barek zêde de dimeşe:
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
Binêrin ka ev pêvajo çawa ji% 70 CPU digire? Ger ev pir caran dibe, PHP-FPM-ya we Divê pirsgirêk hebe!
Ji ber vê yekê, em çawa dikarin veavakirina PHP-FPM xweş bikin da ku server êdî zêde neyê barkirin?
Optimîzasyona hewzê ya pêvajoya PHP-FPM (verastkirina parametreya bingehîn)
Pêşîn, vekin php-fpm Pelên Veavakirinê:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *Guhertoya PHP-ya xwe biguherîne, wek PHP8.3, û wê biguherîne vê:
/etc/php/8.3/fpm/pool.d/www.conf
Guhertoya PHP-ê ya ku ji hêla HestiaCP ve hatî danîn lê bipirse
v-list-web-domain user domain.com
Mînak:
v-list-web-domain abc chenweiliang.com
Di encam de, hûn ê tiştek wekî bibînin:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Ev tê vê wateyê ku malper bikar tîne PHP 8.3.
Ka em li mîhengê PHP-FPM-ya we binêrin:
[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
Hûn dikarin bibînin ku hûn pm Ya ku tê bikar anîn ev e ondemand,Her çend ew dikare di dema betaliyê de karanîna çavkaniyê kêm bike, dema ku seyrûsefer ji nişka ve zêde dibe, dibe ku pêvajo di wextê de nikaribe bersivê bide., di encama 500 error.
1. Parametreyên hewza pêvajoya PHP-FPM eyar bikin
Ger veavakirinê bikar tîne dynamicEv rêbazek e ji bo pêş-destpêkirina hin pêvajoyên xebatê û bi dînamîkî verastkirina wan li gorî qebareya daxwazê, ku dema ku qebareya daxwazê ji nişkê ve zêde dibe, dikare zûtir bersiv bide.
Ji bo malperên ku xwedî hejmareke diyarkirî ya trafîkê ne, tê pêşniyar kirin ku bikar bînin pm = dynamicJi ber ku ew dikare hejmareke diyarkirî ya pêvajoyên bêkar biparêze û di dema hevdemiya bilind de ji 500 xeletiyan dûr bisekine.
Pêşniyar tê kirin ku tenê dema ku qebareya gihîştinê pir kêm be û çavkaniyên bîrê teng bin, were bikar anîn. pm = ondemand Ji bo rizgarkirina çavkaniyan.
Ji bo guhertinê tê pêşniyar kirin ondemand, û xweşbîn bikin pm.max_children Û parametreyên din:
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 后自动退出
Çima hûn dixwazin bi vî rengî biguherînin?
pm = dynamic: Pêvajoyan bi nermî veqetînin da ku ji bendewariya daxwazê ya ku dibe ku ji hêla daxwazê ve dibe sedema dûr bixin;pm.max_children = 16: Pêşîlêgirtina 500 xeletiyên ku ji hêla pir kêm pêvajoyê ve têne çêkirin;pm.start_servers = 5: Dûr destpêkirina pêvajoya hêdî;pm.max_requests = 3000:Pêşîlêgirtina leaksên bîranînê, pêvajoyê bi rêkûpêk vezîvirînin.
2. Ji bo pêşîgirtina li dagirkirina demdirêj dema pêkanîna nivîsên PHP-ê bisînor bikin
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
Ev dikare hinekan asteng bikeSkrîptên PHP yên ku pir CPU bikar tînin dikarin servera we hilweşînin.
Piştî tomarkirinê, pêvajoya PHP-ê ji nû ve bidin destpêkirin:
sudo systemctl restart php8.3-fpmÇavdêriya statûya PHP-FPM çalak bike da ku di her kêliyê de pêşveçûnê bişopîne
Çavdêriya pêvajoya PHP-FPM çalak bikin û her dem wê bibîninHejmara heyî ya pêvajoyên çalak û daxwaza rewşa bendê, ji bo ku ji barkirina serverê dûr bixin.
在 php-fpm.conf Zêdekirin li:
pm.status_path = /status
Dûv re, veavakirina 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;
}
Bi vî awayî, hûn dikarin http://yourdomain.com/status Di çalakiyê de PHP-FPM binihêrin!
Têketinên PHP-FPM xweşbîn bikin da ku zû pirsgirêkan çareser bikin
在 php-fpm.conf Zêde bike bo:
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 的脚本记录到日志
Bi vî rengî, gava ku xeletiyek 500 çêbibe, hûn dikarin rasterast têketinê bibînin:
tail -f /var/log/php-fpm/error.log
Binêrin ka PHP xeletiyek rapor dike, wek mînak out of memory,script execution timeout 。
PHP-FPM-ê bi rêkûpêk ji nû ve bidin destpêkirin da ku pêşî li derketina bîranînê bigirin
bikaribe derbas bibe cron PHP-FPM-ê bi rêkûpêk ji nû ve bidin destpêkirin da ku pêşî li pêvajoyên dirêj-dirêj bigirinMemory Leaks.
crontab -e
Karê plansazkirî yê jêrîn zêde bikin da ku PHP-FPM bixweber di 3ê sibehê de her roj ji nû ve dest pê bike:
0 3 * * * /usr/sbin/service php8.3-fpm restart
Heke pirsgirêk berdewam bike? Optimîzasyona bêtir!
Ger hûn hîn jî optimîzasyona jorîn bişopîninCarinan 500 xeletî çêdibin, hûn dikarin bi xweşbîniyên jêrîn bidomînin:
1. OPcache çalak bike ku karbidestiya darvekirina PHP-ê baştir bike
Ger OPcache hîn neçalak be, hûn dikarin wê bi vî rengî saz bikin (Ubuntu wekî mînak bikar bînin):
sudo apt install php8.3-opcache -y
Piştre biguherînin php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
Tesîr? Leza pêkanîna rûpela PHP-ê pir çêtir bûye!
2. Optimîzasyona veavakirina Nginx
Bawer bikin ku parametreyên têkildarî Nginx maqûl in, wek mînak fastcgi_read_timeout Wê bi guncaw eyar bikin da ku ji ber dema darvekirina dirêj, nivîsarên PHP-ê ji hêla Nginx ve neyên qedandin:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
Kurte: PHP-FPM-ê xweşbîn bikin û malper êdî têk diçe!
Me piştî vê xweşbîniyê çi sererastkirin çêkir?
✅ Optimîzekirina hewza pêvajoya PHP-FPM,bikaranîn ondemandÛ optimîze bike pm.max_children parametre;
✅ Sînorkirina dema darvekirinê ya nivîsarên PHP-ê, ji bo pêşîlêgirtina dagirkirina CPU ya demdirêj;
✅ Çavdêriya PHP-FPM çalak bike, barkirina pêvajoyê di wextê rast de bibînin;
✅ Optimîzekirina têketinên PHP-FPM, bi lez 500 xeletiyan çareser bikin;
✅ PHP-FPM bi rêkûpêk ji nû ve bidin destpêkirin, pêşîlêgirtina leaksên bîranînê;
✅ OPcache çalak bike, karbidestiya darvekirina PHP çêtir bikin;
✅ Optimîzekirina Veavakirina Nginx, ji bo ku pirsgirêkên wextê dûr bikin.
Piştî vê xweşbîniyê, barkirina PHP-FPM dê pir kêm bibe û xebata malperê dê aramtir be! 🔥
Here wê biceribîne! 💪🚀
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) parve kir "Barkirina HestiaCP PHP-FPM pir zêde ye? Çewtiya rûpela malperê ya dînamîk 500? Ev optimîzasyon dê tavilê bikeve meriyetê! ", dibe ku ew ji we re bibe alîkar.
Bi xêr hatî bo parvekirina girêdana vê gotarê:https://www.chenweiliang.com/cwl-32512.html
Ji bo vekirina bêtir hîleyên veşartî🔑, bi xêr hatin beşdarî kanala me ya Telegramê bibin!
Heke hûn jê hez dikin parve bikin û hez bikin! Parvekirin û ecibandinên we motîvasyona me ya berdewam in!