La HestiaCP php-fpm-procezo okupas multajn CPU-rimedojn Kiel mi povas optimumigi ĝin?

HestiaCP Servila CPU-pikilo? Kompleta gvidilo por optimumigi la PHP-FPM-procezon!

La HestiaCP php-fpm-procezo okupas multajn CPU-rimedojn Kiel mi povas optimumigi ĝin?

Ĉu la servila CPU estas ĉiam 100%? La ventumilo turniĝas sovaĝe? Ĉu la retejo malferma rapideco malrapidiĝas?La kulpulo eble estas php-fpm!

Mi ĵus malkovris chenweiliang.com Ĉi tiu PHP-naĝejo php-fpm La procezo freneze konsumis la procesoron, kaj la servilo kraŝis!

Por revivigi la servilon, mi provis serion da optimumigaj metodoj kaj fine sukcesis redukti la CPU-uzadon.

Nun, ni dividu ĉi tion Gvidilo pri Efika Optimumigo! 🚀

1. Limigu la nombron da php-fpm-procezoj

php-fpm defaŭltaj agordoj povassenlimaLa procezo estas kreita neregeble, igante la servilan CPU superŝarĝi.

Por optimumigi ĝin, ni povas modifi la parametrojn de procezadministrado.

ŝalti php-fpm Agordaj dosieroj:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Ŝanĝu al via PHP-versio, ekzemple PHP8.3, kaj ŝanĝu ĝin al ĉi tio:/etc/php/8.3/fpm/pool.d/www.conf

Pridemandi la PHP-version agorditan de HestiaCP

v-list-web-domain user domain.com

Ekz-e:

v-list-web-domain abc chenweiliang.com

En la eligo, vi vidos ion kiel:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Ĉi tio signifas, ke la retejo uzas PHP 8.3.

Trovu kaj modifi la sekvajn parametrojn:

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

Tiam rekomencu php-fpm Por fari ĝin efika:

sudo systemctl restart php-fpm

Efiko: Limigu la nombron da procezoj por malhelpi php-fpm tro konsumi CPU-rimedojn.

2. Ebligu OPCache (por plibonigi PHP-agadon)

PHP revizias la kodon ĉiufoje kiam ĝi estas ekzekutita, kio estas malŝparo de rimedoj.
La solvo? Ebligu OPCache kaj konservu vian PHP-kodon!

redakti php.ini dokumento:

sudo nano /etc/php/*/fpm/php.ini

Aldonu aŭ modifi la jenajn:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0  # 禁用实时检测,提高性能

Post konservado, rekomencu la PHP-procezon:

sudo systemctl restart php8.3-fpm

Efiko: Reduktu ripetan analizadon de PHP-kodo, reduktu CPU-ŝarĝon kaj plibonigu ekzekut-efikecon.

3. Limigu la maksimuman ekzekuttempon de PHP-skriptoj

Se PHP-skripto funkcias tro longe, CPU-resursoj estos kontinue okupataj.
Agordo de akceptebla tempodaŭro povas malhelpi "obstinajn" procezojn okupi la servilon dum longa tempo.

ŝalti php.ini dokumento:

sudo nano /etc/php/*/fpm/php.ini

Modifi la sekvajn parametrojn:

max_execution_time = 30  # PHP 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_limit = 256M  # 限制单个 PHP 进程的内存占用

Tiam rekomencu la PHP-procezon:

sudo systemctl restart php-fpm

Efiko: Malhelpi PHP-procezojn funkcii dum longa tempo kaj redukti CPU-rimedonmalŝparon.

4. Kontrolu MySQL Malrapida demando

PHP-FPM havas altan ŝarĝon,Ĝi povas esti kaŭzita de la malrapida SQL-demando!
开启 MySQL Malrapida enketo-protokolo, eksciu la SQL-deklarojn, kiuj retenas.

Redaktu la MySQL-agordan dosieron:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Aldoni al:

slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1  # 超过 1 秒的查询会被记录

Post konservado, rekomencu MySQL:

sudo systemctl restart mysql

Tiam uzu mysqldumpslow Analizu malrapidajn demandojn:

mysqldumpslow -s c -t 10 /var/log/mysql-slow.log

Efiko: Eltrovu temporabajn SQL-demandojn, optimumigu datumbazan rendimenton kaj nerekte reduktu PHP-ŝarĝon.

5. Limigi la uzadon de rimedoj de Memcached

Rigardante la procezoliston, mi trovis Memcached-proceza CPU-uzado estas 24.8%!
Povas esti, ke la kaŝmemoro-atribuo estas tro granda, igante la CPU prilabori grandan kvanton da datumoj.

Alĝustigo memcached Agordo:

sudo nano /etc/memcached.conf

Revizio:

-m 32  # 限制 Memcached 内存使用 32MB

Tiam rekomencu:

sudo systemctl restart memcached

Efiko: Reduktu la CPU-ŝarĝon de la Memcached-procezo kaj plibonigu kaŝmemorefikecon.

6. Ebligu Nginx por konservi senmovajn rimedojn

Multaj fojoj, PHP procesas petojn, kiuj enhavas grandan nombron da CSS, JS, bildoj, sed ĉi tiuj dosieroj tute ne bezonas PHP-an analizon!
La solvo? Uzu Nginx por konservi senmovajn rimedojn!

Redaktu Nginx-agordon:

sudo nano /etc/nginx/nginx.conf

Aldoni al:

location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
    expires max;
    log_not_found off;
}

Post konservado, rekomencu Nginx:

sudo systemctl restart nginx

Efiko: Reduktu la nombron da fojoj kiam PHP prilaboras senmovajn dosierojn kaj reduktu CPU-uzadon.

7. Trovu la PHP-skripton kiu uzas la plej CPU

Se la CPU ankoraŭ estas tro alta post optimumigo, eble iuj PHP-skriptoj funkcias sovaĝe.
Uzu la sekvan komandon por ekscii la PHP-procezon kun la plej alta CPU-uzado:

ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php

Se vi trovas, ke PHP-skripto okupas tro da CPU, vi povas mortigi ĝin rekte:

kill -9 PID

Efiko:Precize identigu la "malbonajn pomojn" kaj malhelpi la PHP-procezon okupi la CPU dum longa tempo.

Resumo: 7 manieroj optimumigi PHP-FPM

Limigu la nombron da PHP-FPM-procezoj, por malhelpi CPU-troŝarĝon
Ebligu OPCache, reduktu ripetan analizadon de PHP-kodo
Agordi PHP-tempon, por malhelpi longtempan operacion
Kontrolante MySQL-malrapidajn demandojn, optimumigi datumbazan demandan rendimenton
Alĝustigu Memcached Memoron, reduktante CPU-ŝarĝon
Ebligu la statikan kaŝmemoron de Nginx, reduktante la PHP-analizan ŝarĝon
Trovu altan CPU-uzadon PHP-skriptojn, preciza optimumigo

Konklude

Servila optimumigo estas kiel taŭgeco, vi devas fari precizajn ĝustigojn kaj ne fuŝi!
Post serio de optimumigoj, mia servila CPU-ŝarĝo falis de 80% ĝis 15%, la retejo malfermiĝas duoble pli rapide!
Se via servilo havas similajn problemojn, provu ĉi tiujn metodojn! 💪

???? Agu nun! Optimumugu vian PHP-FPM kaj konservu vian servilon! 🚀

Lasu komenton

Via retadreso ne estos publikigita. Bezonataj kampoj estas uzataj * Etikedo

Artikola Adresaro
Rulumu al Supro