HestiaCP php-fpm proces zauzima mnogo CPU resursa. Kako da ga optimizujem?

HestiaCP Serverski CPU skok? Potpuni vodič za optimizaciju PHP-FPM procesa!

HestiaCP php-fpm proces zauzima mnogo CPU resursa. Kako da ga optimizujem?

Da li je CPU servera uvijek na 100%? Ventilator se divlje vrti? Da li se brzina otvaranja web stranice usporava?Krivac bi mogao biti php-fpm!

Nedavno sam otkrio chenweiliang.com Ovaj PHP bazen php-fpm Proces je ludo trošio CPU, a server se srušio!

Kako bih oživio server, isprobao sam niz metoda optimizacije i konačno uspio smanjiti korištenje CPU-a.

Sada, hajde da podelimo ovo Vodič za efikasnu optimizaciju! 🚀

1. Ograničite broj php-fpm procesa

php-fpm podrazumevane postavke moguneograničenoProces se stvara nekontrolirano, uzrokujući preopterećenje serverske procesorske jedinice.

Da bismo ga optimizirali, možemo modificirati parametre upravljanja procesom.

Proboj php-fpm Konfiguracijski fajlovi:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Promijenite na svoju PHP verziju, kao što je PHP8.3, i promijenite je u ovo:/etc/php/8.3/fpm/pool.d/www.conf

Upitajte PHP verziju koju je postavio HestiaCP

v-list-web-domain user domain.com

E.g:

v-list-web-domain abc chenweiliang.com

U izlazu ćete vidjeti nešto poput:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

To znači da web stranica koristi PHP 8.3.

Pronađite i izmijenite sljedeće parametre:

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

Zatim restartujte php-fpm Da bi bio efikasan:

sudo systemctl restart php-fpm

efekt: Ograničite broj procesa kako biste spriječili php-fpm da previše troši CPU resurse.

2. Omogućite OPCache (za poboljšanje performansi PHP-a)

PHP ponovo analizira kod svaki put kada se izvrši, što je gubitak resursa.
Rješenje? Omogućite OPCache i keširajte svoj PHP kod!

编辑 php.ini dokument:

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

Dodajte ili izmijenite sljedeće:

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

Nakon spremanja, ponovo pokrenite PHP proces:

sudo systemctl restart php8.3-fpm

efekt: Smanjite ponovljeno raščlanjivanje PHP koda, smanjite opterećenje CPU-a i poboljšajte efikasnost izvršavanja.

3. Ograničite maksimalno vrijeme izvršavanja PHP skripti

Ako PHP skripta radi predugo, CPU resursi će biti stalno zauzeti.
Postavljanje razumnog vremenskog perioda može spriječiti "tvrdoglave" procese da zauzmu server na duže vrijeme.

Proboj php.ini dokument:

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

Izmijenite sljedeće parametre:

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

Zatim ponovo pokrenite PHP proces:

sudo systemctl restart php-fpm

efekt: Spriječite dugotrajno pokretanje PHP procesa i smanjite rasipanje CPU resursa.

4. Provjerite MySQL Sporo upit

PHP-FPM ima veliko opterećenje,Može biti uzrokovano sporim SQL upitom!
Uključi MySQL Spor dnevnik upita, saznajte SQL izraze koji se zadržavaju.

Uredite MySQL konfiguracijski fajl:

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

Dodaj u:

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

Nakon spremanja, ponovo pokrenite MySQL:

sudo systemctl restart mysql

Zatim koristite mysqldumpslow Analizirajte spore upite:

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

efekt: Saznajte dugotrajne SQL upite, optimizirajte performanse baze podataka i indirektno smanjite opterećenje PHP-a.

5. Ograničite korištenje Memcached resursa

Gledajući listu procesa, našao sam Potrošnja CPU-a Memcached procesa je 24.8%!
Može biti da je alokacija keša prevelika, što uzrokuje da CPU obrađuje veliku količinu podataka.

Prilagođavanje memcached Konfiguracija:

sudo nano /etc/memcached.conf

revidirati:

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

Zatim ponovo pokrenite:

sudo systemctl restart memcached

efekt: Smanjite opterećenje CPU-a Memcached procesa i poboljšajte efikasnost keš memorije.

6. Omogućite Nginx za keširanje statičkih resursa

Mnogo puta PHP obrađuje zahtjeve koji sadrže veliki broj CSS, JS, slike, ali ovim fajlovima uopšte nije potrebna PHP analiza!
Rješenje? Koristite Nginx za keširanje statičkih resursa!

Uredite Nginx konfiguraciju:

sudo nano /etc/nginx/nginx.conf

Dodaj u:

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

Nakon spremanja, ponovo pokrenite Nginx:

sudo systemctl restart nginx

efekt: Smanjite broj puta kada PHP obrađuje statičke datoteke i smanji upotrebu CPU-a.

7. Pronađite PHP skriptu koja koristi najviše CPU-a

Ako je CPU i dalje previsok nakon optimizacije, moguće je da neke PHP skripte rade divlje.
Koristite sljedeću naredbu da saznate PHP proces s najvećom upotrebom CPU-a:

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

Ako ustanovite da PHP skripta zauzima previše CPU-a, možete je direktno ubiti:

kill -9 PID

efekt:Precizno identificirajte "loše jabuke" i spriječite PHP proces da zauzme CPU na duže vrijeme.

Sažetak: 7 načina za optimizaciju PHP-FPM-a

Ograničite broj PHP-FPM procesa, kako bi se spriječilo preopterećenje procesora
Omogući OPCache, smanjiti ponovljeno raščlanjivanje PHP koda
Postavljanje PHP timeout-a, za sprečavanje dugotrajnog rada
Provjera MySQL sporih upita, optimizirati performanse upita baze podataka
Podesite Memcached memoriju, smanjujući opterećenje procesora
Omogućite Nginx statičku keš memoriju, smanjujući opterećenje PHP raščlanjivanja
Pronađite PHP skripte sa visokom potrošnjom CPU-a, precizna optimizacija

u zakljucku

Optimizacija servera je poput fitnesa, morate izvršiti precizna podešavanja i ne petljajte!
Nakon serije optimizacija, opterećenje CPU-a mog servera je palo 80% do 15%, web stranica se otvara duplo brže!
Ako vaš server ima slične probleme, isprobajte ove metode! 💪

???? Poduzmite akciju odmah! Optimizirajte svoj PHP-FPM i sačuvajte svoj server! ????

Komentari

Vaša email adresa neće biti objavljena. Koriste se obavezna polja * Oznaka

Article Directory
Dođite na vrh