A HestiaCP php-fpm folyamat sok CPU erőforrást foglal el Hogyan optimalizálhatom?

HestiaCP Szerver CPU túlfeszültség? Teljes útmutató a PHP-FPM folyamat optimalizálásához!

A HestiaCP php-fpm folyamat sok CPU erőforrást foglal el Hogyan optimalizálhatom?

A szerver CPU mindig 100%-os? Vadul pörög a ventilátor? Lassul a weboldal megnyitási sebessége?A php-fpm lehet a tettes!

Nemrég fedeztem fel chenweiliang.com Ez a PHP medence php-fpm A folyamat őrült módjára felemésztette a CPU-t, és a szerver összeomlott!

A szerver újraélesztése érdekében számos optimalizálási módszert próbáltam ki, és végül sikerült csökkentenem a CPU-használatot.

Most pedig osszuk meg ezt Hatékony optimalizálási útmutató! 🚀

1. Korlátozza a php-fpm folyamatok számát

php-fpm alapértelmezett beállítások lehetnekkorlátlanA folyamat ellenőrizhetetlenül jön létre, ami a szerver CPU túlterhelését okozza.

Optimalizálása érdekében módosíthatjuk a folyamatirányítási paramétereket.

bekapcsol php-fpm Konfigurációs fájlok:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Válts a PHP verziódra, például a PHP8.3-ra, és írd be erre:/etc/php/8.3/fpm/pool.d/www.conf

A HestiaCP által beállított PHP verzió lekérdezése

v-list-web-domain user domain.com

Például:

v-list-web-domain abc chenweiliang.com

A kimenetben valami ilyesmit fog látni:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Ez azt jelenti, hogy a weboldal használ PHP 8.3.

Keresse meg és módosítsa a következő paramétereket:

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

Ezután indítsa újra php-fpm A hatásosság érdekében:

sudo systemctl restart php-fpm

效果: Korlátozza a folyamatok számát, nehogy a php-fpm túlzottan felemésztse a CPU erőforrásokat.

2. Engedélyezze az OPCache-t (a PHP teljesítményének javítása érdekében)

A PHP minden végrehajtáskor újraértelmezi a kódot, ami erőforrások pazarlása.
A megoldás? Engedélyezze az OPCache-t és tárolja el a PHP kódját!

编辑 php.ini dokumentum:

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

Adja hozzá vagy módosítsa a következőket:

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

Mentés után indítsa újra a PHP folyamatot:

sudo systemctl restart php8.3-fpm

效果: Csökkentse a PHP-kód ismételt elemzését, csökkentse a CPU-terhelést és javítsa a végrehajtás hatékonyságát.

3. Korlátozza a PHP szkriptek maximális végrehajtási idejét

Ha egy PHP szkript túl sokáig fut, a CPU erőforrásai folyamatosan lefoglalva lesznek.
Egy ésszerű időtúllépési időszak beállítása megakadályozhatja, hogy a "makacs" folyamatok hosszú ideig lefoglalják a szervert.

bekapcsol php.ini dokumentum:

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

Módosítsa a következő paramétereket:

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

Ezután indítsa újra a PHP folyamatot:

sudo systemctl restart php-fpm

效果: A PHP-folyamatok hosszú távú futásának megakadályozása és a CPU-erőforrás-pazarlás csökkentése.

4. Ellenőrizze MySQL Lassú lekérdezés

A PHP-FPM nagy terhelésű,Lehet, hogy a lassú SQL lekérdezés okozza!
Bekapcsol MySQL Lassú lekérdezési napló, találja meg a visszatartó SQL utasításokat.

Szerkessze a MySQL konfigurációs fájlt:

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

添加:

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

Mentés után indítsa újra a MySQL-t:

sudo systemctl restart mysql

Akkor használd mysqldumpslow Lassú lekérdezések elemzése:

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

效果: Ismerje meg az időigényes SQL lekérdezéseket, optimalizálja az adatbázis teljesítményét, és közvetve csökkenti a PHP terhelést.

5. Korlátozza a memcached erőforrás-használatot

A folyamatlistára nézve találtam A memcached processzoros processzorhasználat 24.8%!
Előfordulhat, hogy a gyorsítótár-kiosztás túl nagy, ami miatt a CPU nagy mennyiségű adatot dolgoz fel.

调整 memcached 配置:

sudo nano /etc/memcached.conf

Felülvizsgálat:

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

Ezután indítsa újra:

sudo systemctl restart memcached

效果: Csökkentse a Memcached folyamat CPU-terhelését és javítsa a gyorsítótár hatékonyságát.

6. Engedélyezze az Nginx számára a statikus erőforrások gyorsítótárazását

Sokszor a PHP olyan kéréseket dolgoz fel, amelyek nagyszámú kérést tartalmaznak CSS, JS, képek, de ezeknek a fájloknak egyáltalán nincs szükségük PHP elemzésre!
A megoldás? Használja az Nginxet a statikus erőforrások gyorsítótárazásához!

Szerkessze az Nginx konfigurációját:

sudo nano /etc/nginx/nginx.conf

添加:

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

Mentés után indítsa újra az Nginx-et:

sudo systemctl restart nginx

效果: Csökkentse a PHP statikus fájlok feldolgozásának számát, és csökkentse a CPU-használatot.

7. Keresse meg a legtöbb CPU-t használó PHP-szkriptet

Ha a CPU még mindig túl magas az optimalizálás után, előfordulhat, hogy egyes PHP szkriptek vadul futnak.
Használja a következő parancsot, hogy megtudja a PHP-folyamatot a legnagyobb CPU-használattal:

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

Ha úgy találja, hogy egy PHP-szkript túl sok CPU-t foglal el, közvetlenül leállíthatja:

kill -9 PID

效果:A "rossz almák" pontos azonosítása, és megakadályozza, hogy a PHP folyamat hosszú ideig lefoglalja a CPU-t.

Összegzés: 7 módszer a PHP-FPM optimalizálására

Korlátozza a PHP-FPM folyamatok számát, a CPU túlterhelés elkerülése érdekében
OPCache engedélyezése, csökkenti a PHP kód ismételt elemzését
PHP időtúllépés beállítása, a hosszú távú működés megelőzése érdekében
MySQL lassú lekérdezések ellenőrzése, optimalizálja az adatbázis lekérdezési teljesítményét
Állítsa be a Memcached memóriát, csökkenti a CPU-terhelést
Az Nginx statikus gyorsítótár engedélyezése, csökkentve a PHP elemzési terhét
Keressen magas CPU-használatot igénylő PHP szkripteket, precíz optimalizálás

Következtetésképpen

A szerveroptimalizálás olyan, mint a fitnesz, precíz beállításokat kell végrehajtania, és ne vacakoljon!
Egy sor optimalizálást követően a szerverem CPU-terhelése csökkent 80%-ról 15%-ra, a weboldal kétszer olyan gyorsan nyílik meg!
Ha a szerverén hasonló problémák vannak, próbálja ki ezeket a módszereket! 💪

???? Cselekedj most! Optimalizálja PHP-FPM-jét és mentse el szerverét! 🚀

发表 评论

E-mail címét nem tesszük közzé. A kötelező mezőket használjuk * Címke

Cikkkönyvtár
Lapozzon a lap tetejére