Répertoire d'articles
Hestia CP Surtension du processeur du serveur ? Un guide complet pour optimiser le processus PHP-FPM !

Le processeur du serveur est-il toujours à 100 % ? Le ventilateur tourne à toute allure ? La vitesse d’ouverture du site Web ralentit-elle ?Le coupable pourrait être php-fpm !
J'ai récemment découvert chenweiliang.com Ce pool PHP php-fpm Le processus a consommé le processeur comme un fou et le serveur a planté !
Afin de relancer le serveur, j'ai essayé une série de méthodes d'optimisation et j'ai finalement réussi à réduire l'utilisation du processeur.
Maintenant, partageons ceci Guide d'optimisation efficace! 🚀
1. Limiter le nombre de processus php-fpm
Les paramètres par défaut de php-fpm peuvent无限Le processus est créé de manière incontrôlable, provoquant une surcharge du processeur du serveur.
Pour l'optimiser, nous pouvons modifier les paramètres de gestion du processus.
Ouverte php-fpm Fichier de configuration:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Passez à votre version PHP, telle que PHP8.3, et remplacez-la par ceci :
/etc/php/8.3/fpm/pool.d/www.conf
Interroger la version PHP définie par HestiaCP
v-list-web-domain user domain.com
Par exemple:
v-list-web-domain abc chenweiliang.com
Dans le résultat, vous verrez quelque chose comme :
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Cela signifie que le site utilise PHP 8.3.
Localisez et modifiez les paramètres suivants :
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 后自动退出
Puis redémarrez php-fpm Pour le rendre efficace :
sudo systemctl restart php-fpm
✅ 效果: Limitez le nombre de processus pour empêcher php-fpm de surconsommer les ressources CPU.
2. Activer OPCache (pour améliorer les performances PHP)
PHP réanalyse le code à chaque fois qu'il est exécuté, ce qui constitue un gaspillage de ressources.
La solution ? Activez OPCache et mettez en cache votre code PHP !
编辑 php.ini fichier:
sudo nano /etc/php/*/fpm/php.ini
Ajoutez ou modifiez les éléments suivants :
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Après avoir enregistré, redémarrez le processus PHP :
sudo systemctl restart php8.3-fpm
✅ 效果:Réduisez l'analyse répétée du code PHP, réduisez la charge du processeur et améliorez l'efficacité de l'exécution.
3. Limiter le temps d'exécution maximal des scripts PHP
Si un script PHP s'exécute trop longtemps, les ressources du processeur seront continuellement occupées.
La définition d'un délai d'expiration raisonnable peut empêcher les processus « tenaces » d'occuper le serveur pendant une longue période.
Ouverte php.ini fichier:
sudo nano /etc/php/*/fpm/php.ini
Modifiez les paramètres suivants :
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Ensuite, redémarrez le processus PHP :
sudo systemctl restart php-fpm
✅ 效果: Empêchez les processus PHP de s'exécuter pendant une longue période et réduisez le gaspillage des ressources CPU.
4. Vérifier MySQL Requête lente
PHP-FPM a une charge élevée,Cela peut être dû à la lenteur de la requête SQL !
开启 MySQL Journal des requêtes lentes, découvrez les instructions SQL qui freinent.
Modifiez le fichier de configuration MySQL :
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Ajouter à:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
Après avoir enregistré, redémarrez MySQL :
sudo systemctl restart mysql
Ensuite, utilisez mysqldumpslow Analyser les requêtes lentes :
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ 效果:Découvrez les requêtes SQL chronophages, optimisez les performances de la base de données et réduisez indirectement la charge PHP.
5. Limitez l'utilisation des ressources Memcached
En regardant la liste des processus, j'ai trouvé L'utilisation du processeur du processus Memcached est de 24.8 % !
Il se peut que l'allocation de cache soit trop importante, ce qui oblige le processeur à traiter une grande quantité de données.
调整 memcached Configuration:
sudo nano /etc/memcached.conf
修改:
-m 32 # 限制 Memcached 内存使用 32MB
Puis redémarrez :
sudo systemctl restart memcached
✅ 效果:Réduisez la charge CPU du processus Memcached et améliorez l'efficacité du cache.
6. Activer Nginx pour mettre en cache les ressources statiques
Souvent, PHP traite des requêtes contenant un grand nombre de CSS, JS, images, mais ces fichiers n’ont pas du tout besoin d’analyse PHP !
La solution ? Utilisez Nginx pour mettre en cache les ressources statiques !
Modifier la configuration Nginx :
sudo nano /etc/nginx/nginx.conf
Ajouter à:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Après avoir enregistré, redémarrez Nginx :
sudo systemctl restart nginx
✅ 效果:Réduisez le nombre de fois que PHP traite les fichiers statiques et réduisez l'utilisation du processeur.
7. Trouvez le script PHP qui utilise le plus de CPU
Si le CPU est toujours trop élevé après l'optimisation, il se peut que certains scripts PHP s'exécutent de manière incontrôlable.
Utilisez la commande suivante pour découvrir le processus PHP avec l'utilisation CPU la plus élevée :
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Si vous constatez qu'un script PHP occupe trop de ressources CPU, vous pouvez le tuer directement :
kill -9 PID
✅ 效果:Identifiez avec précision les « pommes pourries » et évitez que le processus PHP n'occupe le processeur pendant une longue période.
Résumé : 7 façons d'optimiser PHP-FPM
✅ Limiter le nombre de processus PHP-FPM, pour éviter la surcharge du processeur
✅ Activer OPCache, réduire l'analyse répétée du code PHP
✅ Définition du délai d'expiration PHP, pour éviter un fonctionnement à long terme
✅ Vérification des requêtes lentes MySQL, optimiser les performances des requêtes de base de données
✅ Ajuster la mémoire Memcached, réduisant la charge du processeur
✅ Activer le cache statique Nginx, réduisant la charge d'analyse PHP
✅ Trouver des scripts PHP à forte utilisation du processeur, optimisation précise
en conclusion
L’optimisation du serveur est comme le fitness, il faut faire des ajustements précis et ne pas hésiter !
Après une série d'optimisations, la charge CPU de mon serveur est passée de 80% jusqu'à 15%, le site s'ouvre deux fois plus vite !
Si votre serveur rencontre des problèmes similaires, essayez ces méthodes ! 💪
👉 Agissez maintenant! Optimisez votre PHP-FPM et sauvez votre serveur ! 🚀
J'espère que le blog de Chen Weiliang ( https://www.chenweiliang.com/ ) partagé "Le processus php-fpm HestiaCP occupe beaucoup de ressources CPU, comment l'optimiser ? », cela peut vous être utile.
Bienvenue à partager le lien de cet article :https://www.chenweiliang.com/cwl-32490.html
