HestiaCP PHP-FPM di bin barê giran de ye? Çewtiya rûpela malpera dînamîk 500? Ev optimîzasyon dê tavilê bikeve meriyetê!

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.

HestiaCP PHP-FPM di bin barê giran de ye? Çewtiya rûpela malpera dînamîk 500? Ev optimîzasyon dê tavilê bikeve meriyetê!

Meriv çawa bibêje ka PHP-FPM zêde barkirî ye?

dikarin bikar bînin tophtop 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! 💪🚀

评论

Navnîşana e-nameya we nayê weşandin. Zeviyên pêdivî têne bikar anîn * Awanasî

Scroll to Top