A HestiaCP PHP-FPM nagy terhelés alatt áll? Dinamikus weboldal 500 hiba? Ez az optimalizálás azonnal életbe lép!

Találkoztál már ezzel a helyzettel?A webhely elérése hirtelen lelassult, vagy akár 500-as hibát is eredményezett A PHP-FPM újraindítása után visszatért a normál értékre., de a probléma egy idő után újra előjön? Ez nagyon elkeserítő!

Miért történik ez?Valójában ez általában így vanA PHP-FPM folyamatkészlet nincs megfelelően konfigurálva, vagy a kiszolgáló erőforrásai nem elegendőek.által okozott. Ma alaposan optimalizálni fogunk HestiaCP A burkolat alatt található PHP-FPM olyan stabillá teszi a webhelyet, mint egy szikla!

A PHP-FPM túlterheltségének fő oka

A PHP-FPM egyFolyamatkezelő, amely a dinamikus kérések kezeléséért felelős. Ha a konfiguráció nem ésszerű, az a következőkhöz vezethet:

  • A szerver erőforrásai kimerültek, ami miatt a PHP-FPM nem tud időben válaszolni az új kérésekre;
  • Túl kevés folyamat, amikor a forgalom hirtelen megnövekszik, azt nem lehet időben feldolgozni;
  • A folyamathasználat túl magas, ami a CPU terhelés felrobbanását okozza.

A HestiaCP PHP-FPM nagy terhelés alatt áll? Dinamikus weboldal 500 hiba? Ez az optimalizálás azonnal életbe lép!

Hogyan állapítható meg, hogy a PHP-FPM túlterhelt?

lehet használni tophtop Parancs a CPU- és memóriahasználat megtekintéséhez:

top -c

Ha az alábbiakhoz hasonló folyamatinformációkat lát, az azt jelenti, hogy a PHP-FPM nagy terhelés alatt fut:

1669293 abc     20   0  790284 227880 185568 R  73.1   0.9   1:30.09 php-fpm: pool chenweiliang.com                                                    
1669522 abc     20   0  801924 224224 170236 R  69.9   0.9   0:59.01 php-fpm: pool chenweiliang.com

Látja, hogyan foglalják el ezek a folyamatok a CPU több mint 70%-át? Ha ez gyakran előfordul, a PHP-FPM Biztos van valami probléma!

Tehát hogyan optimalizálhatjuk a PHP-FPM konfigurációt, hogy a szerver ne legyen túlterhelve?

PHP-FPM folyamatkészlet optimalizálása (alapparaméterek beállítása)

Először is, nyisd ki php-fpm Konfigurációs fájlok:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Válts a PHP verziódra, például a PHP8.3-ra, és írd be erre:/etc/php/8.3/fpm/pool.d/www.conf

A HestiaCP által beállított PHP verzió lekérdezése

v-list-web-domain user domain.com

Például:

v-list-web-domain abc chenweiliang.com

A kimenetben valami ilyesmit fog látni:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Ez azt jelenti, hogy a weboldal használ PHP 8.3.

Vessünk egy pillantást a PHP-FPM konfigurációdra:

[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660

user = abc
group = abc

pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s

Láthatod, hogy a tiéd pm A használt az ondemand,Bár csökkentheti az erőforrás-felhasználást a tétlenség alatt, amikor a forgalom hirtelen megnő, előfordulhat, hogy a folyamat nem tud időben reagálni., ami 500-as hibát eredményez.

1. Állítsa be a PHP-FPM folyamatkészlet paramétereit

Ha a konfiguráció használja dynamicEz egy módszer bizonyos munkafolyamatok előzetes elindítására és dinamikus beállítására a kérések mennyiségének megfelelően, ami gyorsabban tud reagálni, amikor a kérések mennyisége hirtelen megnő.

Bizonyos forgalmú weboldalak esetén ajánlott a használata pm = dynamicMert képes fenntartani egy bizonyos mennyiségű tétlen folyamatot és elkerülni az 500 hibát nagy párhuzamosság esetén.

Csak akkor ajánlott használni, ha a hozzáférési mennyiség rendkívül alacsony, és a memória-erőforrások szűkösek. pm = ondemand Az erőforrások megtakarítása érdekében.

Javasolt ondemand, és optimalizálja pm.max_children És egyéb paraméterek:

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

Miért akarod így megváltoztatni?

  • pm = dynamic: Rugalmasabb folyamatok kiosztása, hogy elkerülje az igény szerinti kérésvárakozást;
  • pm.max_children = 16: A túl kevés folyamat által okozott 500-as hibák megelőzése;
  • pm.start_servers = 5: Kerülje el a lassú folyamatindítást;
  • pm.max_requests = 3000:Memóriaszivárgások megelőzése, rendszeresen hasznosítsa újra a folyamatot.

2. Korlátozza a PHP szkriptek végrehajtási idejét a hosszú távú kihasználás elkerülése érdekében

request_terminate_timeout = 30s  ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M  ; 限制 PHP 进程最大内存占用

Ez egyeseket megelőzhetA túl sok CPU-t használó PHP szkriptek lerombolhatják a szervert.

Mentés után indítsa újra a PHP folyamatot:

sudo systemctl restart php8.3-fpm

Engedélyezze a PHP-FPM állapotfigyelést, hogy bármikor nyomon követhesse az előrehaladást

Engedélyezze a PHP-FPM folyamatfigyelést, és bármikor megtekinthetiAz aktív folyamatok jelenlegi száma és a kérelem várakozási állapota, hogy elkerüljük a szerver túlterhelését.

php-fpm.conf Hozzáadva:

pm.status_path = /status

Ezután az Nginx konfigurációja:

location /status {
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    allow 127.0.0.1;
    deny all;
}

Ily módon megteheti http://yourdomain.com/status Nézze meg a PHP-FPM-et működés közben!

A PHP-FPM naplók optimalizálása a problémák gyors hibaelhárításához

php-fpm.conf 添加:

php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s  ; 执行超过 5s 的脚本记录到日志

Ily módon, amikor 500-as hiba történik, közvetlenül megtekintheti a naplót:

tail -f /var/log/php-fpm/error.log

Nézze meg, hogy a PHP hibát jelez-e, mint pl out of memory,script execution timeout 等.

Rendszeresen indítsa újra a PHP-FPM-et a memóriaszivárgások elkerülése érdekében

képes átadni cron Indítsa újra a PHP-FPM-et rendszeresen, hogy elkerülje a hosszan tartó folyamatok okozásátMemóriaszivárgás.

crontab -e

Adja hozzá a következő ütemezett feladatot a PHP-FPM automatikus újraindításához minden nap hajnali 3-kor:

0 3 * * * /usr/sbin/service php8.3-fpm restart

Mi van, ha a probléma továbbra is fennáll? További optimalizálás!

Ha továbbra is követi a fenti optimalizálástAlkalmanként 500 hiba történik, folytathatja a következő optimalizálásokkal:

1. Engedélyezze az OPcache-t a PHP végrehajtási hatékonyságának javítása érdekében

Ha az OPcache még nincs engedélyezve, a következő módon telepítheti (például az Ubuntu használatával):

sudo apt install php8.3-opcache -y

Ezután szerkessze php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1

Hatás? A PHP oldal végrehajtási sebessége jelentősen javult!

2. Nginx konfiguráció optimalizálás

Győződjön meg arról, hogy az Nginx-hez kapcsolódó paraméterek ésszerűek, mint pl fastcgi_read_timeout Állítsa be megfelelően, hogy elkerülje a PHP szkriptek leállítását az Nginx által a hosszú végrehajtási idő miatt:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Összegzés: Optimalizálja a PHP-FPM-et, és a webhely többé nem fog összeomlani!

Milyen módosításokat végeztünk az optimalizálás után?

✅ A PHP-FPM folyamatkészlet optimalizálása,használat ondemandÉs optimalizálni pm.max_children paraméter;
A PHP szkriptek végrehajtási idejének korlátozása, a CPU hosszú távú elfoglaltságának megelőzése érdekében;
PHP-FPM figyelés engedélyezése, valós időben tekintse meg a folyamatterhelést;
PHP-FPM naplók optimalizálása, gyors hibaelhárítás 500 hiba;
Rendszeresen indítsa újra a PHP-FPM-et, megakadályozza a memóriaszivárgást;
Engedélyezze az OPcache-t, javítja a PHP végrehajtási hatékonyságát;
Az Nginx konfigurációjának optimalizálása, az időtúllépési problémák elkerülése érdekében.

Az optimalizálás után a PHP-FPM terhelés nagymértékben csökken, és a weboldal működése is stabilabb lesz! 🔥

Menj és próbáld ki most! 💪🚀

发表 评论

E-mail címét nem tesszük közzé. A kötelező mezőket használjuk * Címke

Lapozzon a lap tetejére