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.

www.conf: De ynboude "universele boarnenpool" fan it systeem

Nei it ynstallearjen fan PHP-FPM sil it systeem jo automatysk in ... www.conf map.
itsPositioningIt is hiel ienfâldich - it is gewoan in standert prosespool dy't direkt út 'e doaze wurket, meastentiids ferbûn mei ... www-gegevens Brûkersdownload.

Dit type pool is benammen geskikt foar omjouwings mei ien lokaasje: de konfiguraasje is lichtgewicht, en de parameters binne allegear generike sjabloanen, lykas:

user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm.max_children = 5

As jo ​​mar ien side hostje, kinne jo it direkt en betrouber brûke sûnder ekstra problemen.

etUFO.org.conf: Oanpaste pool

As jo ​​​​ienris meardere siden hawwe, kinne jo net elkenien yn deselde pool hâlde.
Op dit punt sil HestiaCP automatysk in aparte pool oanmeitsje foar elke side, bygelyks... etUFO.org.confSpesjalisearre foar domeinnammen etufo.org 服务。

De gewoane manier fan spyljen is:

  • Brûkers en groepen feroarje:user = etufo,group = etufo
  • Unôfhinklike monitoaring:listen = /run/php/etufo.sock
  • It oanpassen fan it oantal prosessen soarget foar rotsfêste stabiliteit, sels ûnder hege konkurrinsje.
  • Aparte logbestannen meitsje it oplossen fan problemen dúdliker.

De foardielen binne dúdlik:Feilige isolaasjeSels as ien side kompromittearre wurdt, sille de oare siden net beynfloede wurde.

dummy.conf: dummy-bestân

dummy.conf Dit binne meastentiids foarbylden of sjabloanen dy't troch it systeem levere wurde.
It sil eins net rinne, útsein as jo it manuell oanpasse en ynskeakelje.
De betsjutting dêrfan is mear as in "brûkershantlieding", dy't jo fertelt hoe't jo in nije poolkonfiguraasje skriuwe kinne.

Wêrom it swimbad opdiele?

  • feilichheidBrûk ferskillende brûkers foar ferskillende siden om tsjinstridige tagongsrjochten te foarkommen.
  • 性能优化It oantal prosessen kin yndividueel oanpast wurde foar elke pool, wêrtroch fleksibele oanpassingen mooglik binne op basis fan ferkearsfraach.
  • IsolaasjeLogs, flaters en harkadressen binne allegear skieden, wêrtroch it oplossen fan problemen makliker wurdt.

Bygelyks: sels www.conf It stoarte yn.etufo.org.conf It sil noch altyd normaal rinne en sil net de hiele server delhelje.

实际场景

  • Tsjinner mei ien lokaasje: www.conf is genôch.
  • Multisite-tsjinnerElke side hat syn eigen ûnôfhinklike .conf-bestân, lykas etufo.org.conf.
  • dummy.confAllinnich foar referinsje, net oan te rieden.

Konfiguraasjeferliking

www.conf (standert pool)

[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm = dynamic
pm.max_children = 5

etufo.org.conf (Oanpaste pool)

[etufo.org]
user = etufo
group = etufo
listen = /run/php/etufo.sock
pm = dynamic
pm.max_children = 20
access.log = /var/log/php-fpm/etufo.access.log

It wichtichste ferskil is:Brûkersidentiteit, harkadres, oantal prosessen.

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 dynamic, 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

Artikel Directory
Scroll nei boppen