HestiaCP php-fpm -prosessi vie paljon suoritinresursseja. Miten voin optimoida sen?

HestiaCP Palvelimen suorittimen ylikuormitus? Täydellinen opas PHP-FPM-prosessin optimointiin!

HestiaCP php-fpm -prosessi vie paljon suoritinresursseja. Miten voin optimoida sen?

Onko palvelimen CPU aina 100 %? Pyöriikö tuuletin villisti? Hidastuuko sivuston avautumisnopeus?Syyllinen voi olla php-fpm!

huomasin hiljattain chenweiliang.com Tämä PHP-allas php-fpm Prosessi söi prosessoria hullun lailla, ja palvelin kaatui!

Palvelimen elvyttämiseksi kokeilin useita optimointimenetelmiä ja onnistuin lopulta vähentämään suorittimen käyttöä.

Nyt jaetaan tämä Tehokas optimointiopas! 🚀

1. Rajoita php-fpm-prosessien määrää

php-fpm oletusasetukset voivatrajoittamatonProsessi luodaan hallitsemattomasti, mikä aiheuttaa palvelimen suorittimen ylikuormituksen.

Optimoidaksemme sitä voimme muokata prosessinhallinnan parametreja.

kiihottua php-fpm Asetustiedostot:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Vaihda PHP-versioosi, kuten PHP8.3, ja muuta se tähän:/etc/php/8.3/fpm/pool.d/www.conf

HestiaCP:n asettaman PHP-version kysely

v-list-web-domain user domain.com

Esimerkiksi:

v-list-web-domain abc chenweiliang.com

Tulosteessa näet jotain seuraavanlaista:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Tämä tarkoittaa, että sivusto käyttää PHP 8.3.

Etsi ja muokkaa seuraavat parametrit:

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

Käynnistä sitten uudelleen php-fpm Tehostaaksesi sen:

sudo systemctl restart php-fpm

效果: Rajoita prosessien määrää, jotta php-fpm ei kuluta liikaa suorittimen resursseja.

2. Ota OPCache käyttöön (parantaaksesi PHP:n suorituskykyä)

PHP jäsentää koodin uudelleen aina, kun se suoritetaan, mikä on resurssien tuhlausta.
Ratkaisu? Ota OPCache käyttöön ja tallenna PHP-koodisi välimuistiin!

编辑 php.ini asiakirja:

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

Lisää tai muokkaa seuraavia:

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

Käynnistä PHP-prosessi uudelleen tallennuksen jälkeen:

sudo systemctl restart php8.3-fpm

效果: Vähennä PHP-koodin toistuvaa jäsentämistä, vähennä suorittimen kuormitusta ja paranna suoritustehoa.

3. Rajoita PHP-skriptien enimmäissuoritusaikaa

Jos PHP-skripti on käynnissä liian kauan, suorittimen resurssit ovat jatkuvasti käytössä.
Kohtuullisen aikakatkaisuajan asettaminen voi estää "itsepäisiä" prosesseja joutumasta palvelimelle pitkäksi aikaa.

kiihottua php.ini asiakirja:

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

Muokkaa seuraavia parametreja:

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

Käynnistä sitten PHP-prosessi uudelleen:

sudo systemctl restart php-fpm

效果: Estä PHP-prosesseja toimimasta pitkään ja vähennä suorittimen resurssien hukkaa.

4. Tarkista MySQL Hidas kysely

PHP-FPM:llä on suuri kuormitus,Se voi johtua hitaasta SQL-kyselystä!
avoin MySQL Hidas kyselyloki, selvitä SQL-lauseet, jotka hidastavat.

Muokkaa MySQL-määritystiedostoa:

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

Käynnistä MySQL uudelleen tallennuksen jälkeen:

sudo systemctl restart mysql

Käytä sitten mysqldumpslow Analysoi hitaat kyselyt:

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

效果: Ota selvää aikaa vievistä SQL-kyselyistä, optimoi tietokannan suorituskyky ja vähennä epäsuorasti PHP-kuormitusta.

5. Rajoita välimuistissa olevien resurssien käyttöä

Katsoessani prosessiluetteloa löysin Välimuistissa olevan prosessin suorittimen käyttö on 24.8 %!
Saattaa olla, että välimuistin varaus on liian suuri, jolloin suoritin käsittelee suuren määrän dataa.

调整 memcached Kokoonpano:

sudo nano /etc/memcached.conf

修改:

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

Käynnistä sitten uudelleen:

sudo systemctl restart memcached

效果: Vähennä Memcached-prosessin prosessoritaakkaa ja paranna välimuistin tehokkuutta.

6. Salli Nginx tallentaa staattiset resurssit välimuistiin

Usein PHP käsittelee pyynnöt, jotka sisältävät suuren määrän CSS, JS, kuvat, mutta nämä tiedostot eivät tarvitse PHP-jäsennystä ollenkaan!
Ratkaisu? Käytä Nginxiä staattisten resurssien välimuistiin!

Muokkaa Nginx-kokoonpanoa:

sudo nano /etc/nginx/nginx.conf

添加:

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

Käynnistä Nginx uudelleen tallennuksen jälkeen:

sudo systemctl restart nginx

效果: Vähennä sitä, kuinka monta kertaa PHP käsittelee staattisia tiedostoja ja vähennä suorittimen käyttöä.

7. Etsi PHP-skripti, joka käyttää eniten suoritinta

Jos suoritin on edelleen liian korkea optimoinnin jälkeen, voi olla, että jotkut PHP-skriptit toimivat villisti.
Käytä seuraavaa komentoa saadaksesi selville PHP-prosessin, jolla on suurin suorittimen käyttö:

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

Jos huomaat, että PHP-skripti vie liikaa suoritinta, voit lopettaa sen suoraan:

kill -9 PID

效果:Tunnista "huonot omenat" tarkasti ja estä PHP-prosessia miehittämästä CPU:ta pitkään.

Yhteenveto: 7 tapaa optimoida PHP-FPM

Rajoita PHP-FPM-prosessien määrää, estääksesi suorittimen ylikuormituksen
Ota OPCache käyttöön, vähentää PHP-koodin toistuvaa jäsentämistä
PHP aikakatkaisun asettaminen, estääksesi pitkäaikaisen käytön
Tarkistetaan MySQL:n hitaita kyselyitä, optimoida tietokantakyselyn suorituskykyä
Säädä välimuistissa olevaa muistia, vähentää suorittimen kuormitusta
Ota Nginx-staattinen välimuisti käyttöön, mikä vähentää PHP-jäsennystaakkaa
Etsi paljon suorittimen käyttöä käyttäviä PHP-skriptejä, tarkka optimointi

tiivistettynä

Palvelimen optimointi on kuin kuntoilu, sinun on tehtävä tarkkoja säätöjä äläkä sekoita!
Useiden optimointien jälkeen palvelimeni CPU-kuormitus on laskenut 80 % alas 15 %, sivusto avautuu kaksi kertaa nopeammin!
Jos palvelimellasi on samanlaisia ​​ongelmia, kokeile näitä menetelmiä! 💪

???? Toimi nyt! Optimoi PHP-FPM ja tallenna palvelimesi! 🚀

发表 评论

Sähköpostiosoitettasi ei julkaista. 必填 项 已 用 * 标注

Siirry alkuun