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

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

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

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 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_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! 🚀

发表 评论

您的邮箱地址不会被公开.必填项已用*标注

Siirry alkuun