HestiaCP PHP-FPM hè sottu carica pesante? Errore di pagina web dinamica 500? Questa ottimisazione entrerà in vigore immediatamente!

Avete mai scontru sta situazione?L'accessu di u situ web rallintatu di colpu, o ancu risultatu in un errore 500 Dopu avè riavviatu PHP-FPM, hà tornatu à u normale., ma u prublema torna dopu à pocu tempu ? Questu hè cusì frustrante!

Perchè sta succorsu?In fatti, questu hè di solituU gruppu di processu PHP-FPM ùn hè micca cunfiguratu bè, o i risorse di u servitore sò insufficienti.causatu da. Oghje, avemu da ottimisà bè HestiaCP PHP-FPM sottu u cappucciu face u situ web stabile cum'è una roccia!

U mutivu core perchè PHP-FPM hè sovraccaricatu

PHP-FPM hè unManager di prucessu, chì hè rispunsevule per trattà e dumande dinamiche. Se a cunfigurazione ùn hè micca raghjone, pò purtà à:

  • E risorse di u servitore sò esaurite, facennu chì PHP-FPM ùn sia incapace di risponde à e novi richieste in una manera puntuale;
  • Troppu pochi prucessi, quandu u trafficu aumenta di colpu, ùn pò micca esse processatu in u tempu;
  • L'usu di prucessu hè troppu altu, pruvucannu a carica di CPU per esplusioni.

HestiaCP PHP-FPM hè sottu carica pesante? Errore di pagina web dinamica 500? Questa ottimisazione entrerà in vigore immediatamente!

Cumu sapè se PHP-FPM hè sovraccaricatu?

pò aduprà top O htop Cumanda per vede CPU è usu di memoria:

top -c

Se vede l'infurmazioni di prucessu simili à i seguenti, significa chì PHP-FPM hè in esecuzione sottu una carica alta:

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

Vede cumu questi prucessi piglianu più di 70% di u CPU? Se questu succede spessu, u vostru PHP-FPM Ci deve esse un prublema!

Allora, cumu pudemu ottimisà a cunfigurazione PHP-FPM per chì u servitore ùn hè più sopracargatu?

Ottimisazione di u pool di processi PHP-FPM (aggiustamentu di i paràmetri core)

Prima, apre php-fpm File di cunfigurazione:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Cambiate à a vostra versione di PHP, cum'è PHP8.3, è cambiatela à questu:/etc/php/8.3/fpm/pool.d/www.conf

Interroga a versione PHP stabilita da HestiaCP

v-list-web-domain user domain.com

P.e.:

v-list-web-domain abc chenweiliang.com

In u output, vi vede qualcosa cum'è:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Questu significa chì u situ usa PHP 8.3.

Demu un'ochjata à a vostra cunfigurazione PHP-FPM:

[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

Pudete vede chì u vostru pm Quellu utilizatu hè ondemand,Ancu s'ellu pò riduce l'usu di risorse durante u tempu inattivu, quandu u trafficu aumenta di colpu, u prucessu ùn pò micca esse capace di risponde à u tempu., risultatu in un errore 500.

1. Adjust PHP-FPM process pool paràmetri

Se a cunfigurazione usa dynamicQuestu hè un metudu per pre-inizià certi prucessi di travagliu è aghjustà li dinamicamente secondu u vulume di richieste, chì pò risponde più rapidamente quandu u vulume di richieste aumenta di colpu.

Per i siti web cun una certa quantità di trafficu, hè cunsigliatu di utilizà pm = dynamicPerchè pò mantene una certa quantità di prucessi inattivi è evità 500 errori durante l'alta cuncurrenza.

Hè cunsigliatu di aduprà solu quandu u vulume d'accessu hè estremamente bassu è e risorse di memoria sò strette. pm = ondemand Per risparmià risorse.

Suggerutu à ondemand, è ottimisimu pm.max_children È altri parametri:

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

Perchè vo vulete cambià cusì?

  • pm = dynamic: Allocate i prucessi più flessibili per evità l'attesa di a dumanda chì pò esse causata da a dumanda;
  • pm.max_children = 16: Impedisce 500 errori causati da troppu pochi prucessi;
  • pm.start_servers = 5: Evite l'iniziu di prucessu lento;
  • pm.max_requests = 3000:Prevenzione di fughe di memoria, riciclà u prucessu regularmente.

2. Limità u tempu d'esekzione di script PHP per impedisce l'occupazione à longu andà

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

Questu pò impedisce alcuniI scripts PHP chì utilizanu troppu CPU ponu fallu u vostru servitore.

Dopu avè salvatu, ripigliate u prucessu PHP:

sudo systemctl restart php8.3-fpm

Habilita u monitoraghju di u statutu PHP-FPM per seguità u prugressu in ogni mumentu

Habilita u monitoraghju di u prucessu PHP-FPM è vede lu in ogni mumentuU numeru attuale di prucessi attivi è u statu di attesa di dumanda, per evità a sovraccarica di u servitore.

in php-fpm.conf Aggiuntu in:

pm.status_path = /status

Allora, cunfigurazione 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;
}

In questu modu, pudete http://yourdomain.com/status Scuprite PHP-FPM in azione!

Ottimisate i logs PHP-FPM per risolve rapidamente i prublemi

in php-fpm.conf Aghjunghjite à:

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

In questu modu, ogni volta chì si trova un errore 500, pudete vede direttamente u logu:

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

Vede se PHP riporta un errore, cum'è out of memory,script execution timeout Aspetta.

Restart PHP-FPM regularmente per prevene perdite di memoria

capace di passà cron Restart PHP-FPM regularmente per prevene i prucessi di longa durataPerdite di memoria.

crontab -e

Aghjunghjite a seguente attività pianificata per riavvia automaticamente PHP-FPM à 3 am ogni ghjornu:

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

E se u prublema persiste? Ulteriore ottimisazione!

Sè sempre seguitate l'optimizazione sopraIn ocasu 500 errori si trovanu, pudete cuntinuà cù e seguenti ottimisazioni:

1. Habilita OPcache per migliurà l'efficienza di l'esekzione PHP

Se OPcache ùn hè ancu attivatu, pudete installà cusì (usendu Ubuntu cum'è un esempiu):

sudo apt install php8.3-opcache -y

Allora edità php.ini:

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

Effettu ? A velocità di esecuzione di a pagina PHP hè stata assai migliurata!

2. Ottimisazione di cunfigurazione Nginx

Assicuratevi chì i paràmetri ligati à Nginx sò ragiunate, cum'è fastcgi_read_timeout Aghjustate bè per evità chì i script PHP sò terminati da Nginx per via di un longu tempu di esecuzione:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Riassuntu: Ottimisate PHP-FPM è u situ web ùn crasherà più!

Chì aghjustamenti avemu fattu dopu sta ottimisazione?

✅ Ottimisazione di u gruppu di prucessu PHP-FPM, usu ondemandÈ ottimisimu pm.max_children paràmetru;
Limitazione di u tempu d'esekzione di script PHP, per prevene l'occupazione CPU à longu andà;
Habilita u monitoraghju PHP-FPM, vede u prucessu di carica in tempu reale;
Ottimisazione di logs PHP-FPM, risolve rapidamente 500 errori;
Riavvia PHP-FPM regularmente, impediscenu perdite di memoria;
Habilita OPcache, migliurà l'efficienza di esecutivu PHP;
Optimizing Nginx Configuration, per evità prublemi di timeout.

Dopu sta ottimisazione, a carica PHP-FPM serà ridutta assai è l'operazione di u situ web serà più stabile! 🔥

Andate à pruvà avà! 💪🚀

发表 评论

U vostru indirizzu email ùn serà micca publicatu. I campi richiesti sò aduprati * Etichetta

Libru di Top