HestiaCP php-fpm-processen optager mange CPU-ressourcer. Hvordan kan jeg optimere den?

HestiaCP Server CPU stigning? En komplet guide til optimering af PHP-FPM processen!

HestiaCP php-fpm-processen optager mange CPU-ressourcer. Hvordan kan jeg optimere den?

Er serverens CPU altid på 100%? Ventilatoren snurrer vildt? Er hjemmesidens åbningshastighed langsommere?Synderen kan være php-fpm!

opdagede jeg for nylig chenweiliang.com Denne PHP pool php-fpm Processen åd CPU'en fuldstændig op, og serveren crashte!

For at genoplive serveren prøvede jeg en række optimeringsmetoder og lykkedes endelig med at reducere CPU-forbruget.

Lad os nu dele dette Effektiv optimeringsvejledning! 🚀

1. Begræns antallet af php-fpm-processer

php-fpm standardindstillinger kan evtubegrænsetProcessen skabes ukontrolleret, hvilket får server-CPU'en til at overbelaste.

For at optimere det kan vi ændre processtyringsparametrene.

打开 php-fpm Konfigurationsfiler:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Skift til din PHP-version, f.eks. PHP8.3, og ændr den til denne:/etc/php/8.3/fpm/pool.d/www.conf

Forespørg PHP-versionen angivet af HestiaCP

v-list-web-domain user domain.com

For eksempel:

v-list-web-domain abc chenweiliang.com

I outputtet vil du se noget som:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Det betyder, at siden bruger PHP 8.3.

Find og rediger følgende 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 后自动退出

Genstart derefter php-fpm For at gøre det effektivt:

sudo systemctl restart php-fpm

effekt: Begræns antallet af processer for at forhindre php-fpm i at overforbruge CPU-ressourcer.

2. Aktiver OPCache (for at forbedre PHP-ydeevne)

PHP genskaber koden hver gang den udføres, hvilket er spild af ressourcer.
Løsningen? Aktiver OPCache og cache din PHP-kode!

编辑 php.ini dokument:

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

Tilføj eller rediger følgende:

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

Efter at have gemt, genstart PHP-processen:

sudo systemctl restart php8.3-fpm

effekt: Reducer gentagne parsing af PHP-kode, reducer CPU-byrden og forbedre eksekveringseffektiviteten.

3. Begræns den maksimale udførelsestid for PHP-scripts

Hvis et PHP-script kører for længe, ​​vil CPU-ressourcer være konstant optaget.
Indstilling af en rimelig timeoutperiode kan forhindre "stædige" processer i at optage serveren i lang tid.

打开 php.ini dokument:

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

Rediger følgende parametre:

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

Genstart derefter PHP-processen:

sudo systemctl restart php-fpm

effekt: Forhindrer PHP-processer i at køre i lang tid, og reducer spild af CPU-ressourcer.

4. Tjek MySQL Langsom forespørgsel

PHP-FPM har en høj belastning,Det kan være forårsaget af den langsomme SQL-forespørgsel!
开启 MySQL Langsom forespørgselslog, find ud af de SQL-sætninger, der holder tilbage.

Rediger MySQL-konfigurationsfilen:

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 秒的查询会被记录

Efter at have gemt, genstart MySQL:

sudo systemctl restart mysql

Brug derefter mysqldumpslow Analyser langsomme forespørgsler:

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

effekt: Find ud af tidskrævende SQL-forespørgsler, optimer databasens ydeevne, og reducer indirekte PHP-belastning.

5. Begræns Memcached ressourceforbrug

Da jeg kiggede på proceslisten, fandt jeg Memcached proces CPU-brug er 24.8%!
Det kan være, at cache-allokeringen er for stor, hvilket får CPU'en til at behandle en stor mængde data.

调整 memcached 配置 :

sudo nano /etc/memcached.conf

Revidere:

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

Genstart derefter:

sudo systemctl restart memcached

effekt: Reducer CPU-byrden af ​​Memcached-processen og forbedre cacheeffektiviteten.

6. Aktiver Nginx til at cache statiske ressourcer

Mange gange behandler PHP anmodninger, der indeholder et stort antal CSS, JS, billeder, men disse filer behøver slet ikke PHP-parsing!
Løsningen? Brug Nginx til at cache statiske ressourcer!

Rediger Nginx-konfiguration:

sudo nano /etc/nginx/nginx.conf

添加:

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

Efter at have gemt, genstart Nginx:

sudo systemctl restart nginx

effekt: Reducer antallet af gange, PHP behandler statiske filer, og reducer CPU-brug.

7. Find det PHP-script, der bruger mest CPU

Hvis CPU'en stadig er for høj efter optimering, kan det være, at nogle PHP-scripts kører vildt.
Brug følgende kommando til at finde ud af PHP-processen med det højeste CPU-forbrug:

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

Hvis du opdager, at et PHP-script optager for meget CPU, kan du dræbe det direkte:

kill -9 PID

effekt: Nøjagtigt identificere de "dårlige æbler" og forhindre PHP-processen i at optage CPU'en i lang tid.

Resumé: 7 måder at optimere PHP-FPM på

Begræns antallet af PHP-FPM-processer, for at forhindre CPU-overbelastning
Aktiver OPCache, reducere gentagen parsing af PHP-kode
Indstilling af PHP timeout, for at forhindre langvarig drift
Kontrollerer langsomme MySQL-forespørgsler, optimere databaseforespørgselsydeevne
Juster Memcached Memory, hvilket reducerer CPU-byrden
Aktiver Nginx statisk cache, hvilket reducerer PHP-parsingbyrden
Find PHP-scripts med højt CPU-forbrug, præcis optimering

Afslutningsvis

Serveroptimering er ligesom fitness, du skal foretage præcise justeringer og ikke rode rundt!
Efter en række optimeringer er min server-CPU-belastning faldet fra 80 % ned til 15 %, hjemmesiden åbner dobbelt så hurtigt!
Hvis din server har lignende problemer, så prøv disse metoder! 💪

???? Tag handling nu! Optimer din PHP-FPM og gem din server! 🚀

发表 评论

Din e-mailadresse vil ikke blive offentliggjort. 必填 项 已 用 * 标注

Artikel Directory
Rul til top