Cikkkönyvtár
- 1 A PHP-FPM túlterheltségének fő oka
- 2 PHP-FPM folyamatkészlet optimalizálása (alapparaméterek beállítása)
- 3 Engedélyezze a PHP-FPM állapotfigyelést, hogy bármikor nyomon követhesse az előrehaladást
- 4 A PHP-FPM naplók optimalizálása a problémák gyors hibaelhárításához
- 5 Rendszeresen indítsa újra a PHP-FPM-et a memóriaszivárgások elkerülése érdekében
- 6 Mi van, ha a probléma továbbra is fennáll? További optimalizálás!
- 7 Összegzés: Optimalizálja a PHP-FPM-et, és a webhely többé nem fog összeomlani!
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.

Hogyan állapítható meg, hogy a PHP-FPM túlterhelt?
lehet használni top 或 htop 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-fpmEngedé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! 💪🚀
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) megosztott "A HestiaCP PHP-FPM terhelés túl magas? Dinamikus weboldal 500 hiba? Ez az optimalizálás azonnal életbe lép! ", hasznos lehet az Ön számára.
Üdvözöljük a cikk linkjének megosztásában:https://www.chenweiliang.com/cwl-32512.html
További rejtett trükkök🔑 felfedéséhez csatlakozz Telegram csatornánkhoz!
Oszd meg és lájkold, ha tetszik! Az Ön megosztásai és lájkjai továbbra is motiválnak minket!