HestiaCP PHP-FPM is ûnder swiere lading? Dynamyske webside 500 flater? Dizze optimalisaasje sil fuortendaliks effekt hawwe!

Hawwe jo dizze situaasje oait tsjinkaam?Webside-tagong fertrage ynienen, of resultearre sels yn in 500-flater Nei it opnij starte fan PHP-FPM kaam it werom nei normaal., mar it probleem ferskynt nei in skoftke wer? Dit is sa frustrerend!

Wêrom bart dit?Yn feite, dit is meastalDe PHP-FPM-prosespool is net goed ynsteld, of de serverboarnen binne net genôch.feroarsake troch. Hjoed sille wy yngeand optimalisearje HestiaCP PHP-FPM ynstallearre makket de webside sa stabyl as in rots!

De kearnreden wêrom PHP-FPM wurdt oerladen

PHP-FPM is inProses Manager, dy't ferantwurdlik is foar it behanneljen fan dynamyske oanfragen. As de konfiguraasje net ridlik is, kin it liede ta:

  • Tsjinner boarnen binne útput, wêrtroch PHP-FPM net yn steat is om op 'e tiid te reagearjen op nije oanfragen;
  • Te min prosessen, as it ferkear ynienen ferheget, kin it net yn 'e tiid ferwurke wurde;
  • Prosesgebrûk is te heech, wêrtroch't de CPU-lading eksplodearret.

HestiaCP PHP-FPM is ûnder swiere lading? Dynamyske webside 500 flater? Dizze optimalisaasje sil fuortendaliks effekt hawwe!

Hoe kinne jo fertelle as PHP-FPM oerladen is?

kin brûke tophtop Kommando om CPU- en ûnthâldgebrûk te besjen:

top -c

As jo ​​​​prosesynformaasje sjogge lykas de folgjende, betsjuttet it dat PHP-FPM ûnder hege lading rint:

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

Sjoch hoe't dizze prosessen mear as 70% fan 'e CPU opnimme? As dit bart faak, jo PHP-FPM Der moat in probleem wêze!

Dus, hoe kinne wy ​​de PHP-FPM-konfiguraasje optimalisearje, sadat de tsjinner net mear oerladen wurdt?

PHP-FPM proses pool optimisaasje (kearn parameter oanpassing)

Earst, iepen php-fpm Konfiguraasjetriemmen:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Wikselje nei jo PHP-ferzje, lykas PHP8.3, en feroarje it nei dit:/etc/php/8.3/fpm/pool.d/www.conf

Freegje de PHP-ferzje op dy't ynsteld is troch HestiaCP

v-list-web-domain user domain.com

E.g:

v-list-web-domain abc chenweiliang.com

Yn 'e útfier sille jo wat sjen as:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Dit betsjut dat de side brûkt PHP 8.3.

Litte wy ris nei jo PHP-FPM-konfiguraasje sjen:

[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

Jo kinne sjen dat jo pm De iene brûkt is ondemand,Hoewol it gebrûk fan boarnen yn 'e idle tiid kin ferminderje, as ferkear ynienen ferheget, kin it proses miskien net yn' e tiid reagearje., resultearret yn in 500 flater.

1. Pas PHP-FPM proses pool parameters

As de konfiguraasje brûkt dynamicDit is in metoade om guon wurkprosessen foarôf te starten en se dynamysk oan te passen neffens it fersykvolume, wat rapper reagearje kin as it fersykvolume ynienen tanimt.

Foar websiden mei in bepaalde hoemannichte ferkear is it oan te rieden om te brûken pm = dynamicOmdat it in bepaald oantal idle prosessen kin behâlde en 500 flaters foarkomme kin tidens hege konkurrinsje.

It is oan te rieden om it allinich te brûken as it tagongsvolume ekstreem leech is en de ûnthâldboarnen krap binne. pm = ondemand Om boarnen te besparjen.

Foarsteld oan ondemand, en optimalisearje pm.max_children En oare parameters:

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 后自动退出

Wêrom wolle jo it sa feroarje?

  • pm = dynamic: Allocearje prosessen fleksibeler om it wachtsjen fan fersyk te foarkommen dat kin wurde feroarsake troch ondemand;
  • pm.max_children = 16: Foarkom 500 flaters feroarsake troch te min prosessen;
  • pm.start_servers = 5: Avoid trage proses opstarten;
  • pm.max_requests = 3000:Previnsje fan ûnthâld lekken, recycle it proses geregeldwei.

2. Beheine de útfieringstiid fan PHP-skripts om lange termyn besetting te foarkommen

request_terminate_timeout = 30s  ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M  ; 限制 PHP 进程最大内存占用

Dit kin guon foarkommePHP-skripts dy't tefolle CPU brûke kinne jo server delbringe.

Nei it bewarjen, start it PHP-proses opnij:

sudo systemctl restart php8.3-fpm

Skeakelje PHP-FPM-statusmonitoring yn om de foarútgong op elk momint by te hâlden

Skeakelje PHP-FPM-prosesmonitoring yn en besjoch it op elk momintAktueel oantal aktive prosessen en fersyk wachtstatus, om tsjinner oerladen te foarkommen.

php-fpm.conf Taheakke yn:

pm.status_path = /status

Dan, Nginx-konfiguraasje:

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;
}

Op dizze manier kinne jo http://yourdomain.com/status Besjoch PHP-FPM yn aksje!

Optimalisearje PHP-FPM-logboeken om problemen fluch op te lossen

php-fpm.conf Taheakje oan:

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 的脚本记录到日志

Op dizze manier kinne jo, as in 500-flater optreedt, it log direkt besjen:

tail -f /var/log/php-fpm/error.log

Sjoch as PHP in flater rapportearret, lykas out of memory,script execution timeout Wachtsje.

Herstart PHP-FPM regelmjittich om ûnthâldlekken te foarkommen

trochjaan kinne cron Herstart PHP-FPM regelmjittich om foar te kommen dat langrinnende prosessen feroarsaakjeMemory Leaks.

crontab -e

Foegje de folgjende plande taak ta om PHP-FPM automatysk opnij te begjinnen om 3 oere elke dei:

0 3 * * * /usr/sbin/service php8.3-fpm restart

Wat as it probleem oanhâldt? Fierdere optimalisaasje!

As jo ​​noch folgje de boppesteande optimalisaasjeSa no en dan komme 500 flaters foar, kinne jo trochgean mei de folgjende optimisaasjes:

1. OPcache ynskeakelje om PHP-útfiereffisjinsje te ferbetterjen

As OPcache noch net ynskeakele is, kinne jo it sa ynstallearje (mei Ubuntu as foarbyld):

sudo apt install php8.3-opcache -y

dan bewurkje php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1

Effekt? PHP-side-útfiersnelheid is gâns ferbettere!

2. Nginx konfiguraasje optimalisaasje

Soargje derfoar dat Nginx-relatearre parameters ridlik binne, lykas fastcgi_read_timeout Pas it passend oan om te foarkommen dat PHP-skripts wurde beëinige troch Nginx fanwegen lange útfieringstiid:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Gearfetting: Optimalisearje PHP-FPM en de webside sil net langer crashe!

Hokker oanpassingen hawwe wy makke nei dizze optimalisaasje?

✅ Optimalisearje de PHP-FPM-prosespool,brûke ondemandEn optimalisearje pm.max_children parameter;
Beheining fan de útfieringstiid fan PHP-skripts, om lange termyn CPU-besetting te foarkommen;
PHP-FPM-monitoring ynskeakelje, besjoch de proseslading yn echte tiid;
Optimalisearje PHP-FPM-logs, fluch troubleshoot 500 flaters;
Herstart PHP-FPM regelmjittich, foarkomme ûnthâld lekken;
OPcache ynskeakelje, ferbetterje PHP útfiering effisjinsje;
Nginx-konfiguraasje optimalisearje, om time-outproblemen te foarkommen.

Nei dizze optimisaasje sil de PHP-FPM-lading sterk fermindere wurde en sil de webside-operaasje stabiler wêze! 🔥

Gean besykje it no! 💪🚀

发表 评论

Jo e-mailadres sil net publisearre wurde. Ferplichte fjilden wurde brûkt * Etiket

Scroll nei boppen