Artikkelihakemisto
HestiaCP -palvelimen suorittimen piikit? Täydellinen opas PHP-FPM-prosessien optimointiin!

Onko palvelimesi prosessori jatkuvasti 100 %:n teholla? Pyöriikö tuulettimet hullun lailla? Latautuuko verkkosivustosi hitaasti? 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öä.
Jaetaanpa nyt tämä tehokas optimointiopas ! 🚀
1. Rajoita php-fpm-prosessien määrää
php-fpm:n oletusasetukset saattavat luoda rajattoman määrän prosesseja, mikä aiheuttaa palvelimen suorittimen ylikuormitusta.
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ä osoittaa, että verkkosivusto käyttää PHP 8.3:tä.
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
✅Vaikutus : Rajoittaa prosessien määrää estääkseen php-fpm:ää kuluttamasta 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
✅Vaikutus : Vähentää PHP-koodin toistuvaa jäsentämistä, pienentää suorittimen kuormitusta ja parantaa suorituksen tehokkuutta.
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 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Käynnistä sitten PHP-prosessi uudelleen:
sudo systemctl restart php-fpm
✅Vaikutus : Estää PHP-prosesseja suorittamasta pitkiä aikoja, mikä vähentää 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
✅Tulos : Tunnista aikaa vievät SQL-kyselyt, optimoi tietokannan suorituskykyä ja vähennä epäsuorasti PHP-kuormitusta.
5. Rajoitukset memcached 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
✅Vaikutus : Vähentää Memcached-prosessin suorittimen kuormitusta ja parantaa 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
✅Tulos : Vähentää PHP:n staattisten tiedostojen käsittelykertojen määrää, mikä alentaa 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
✅Tulos : Tunnistaa tarkasti "huonot omenat" ja estää PHP-prosesseja kuluttamasta prosessoria pitkiä aikoja.
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:si ja pelasta palvelimesi! 🚀
Toivottavasti Chen Weiliangin blogissa ( https://www.chenweiliang.com/ ) jaetusta artikkelista "HestiaCP php-fpm-prosessi kuluttaa paljon suorittimen resursseja, miten sitä optimoidaan?" on sinulle hyötyä.
Voit vapaasti jakaa tämän artikkelin linkin: https://www.chenweiliang.com/cwl-32490.html
