Le processus php-fpm HestiaCP consomme beaucoup de ressources CPU. Comment puis-je l'optimiser ?

Hestia CP Surtension du processeur du serveur ? Un guide complet pour optimiser le processus PHP-FPM !

Le processus php-fpm HestiaCP consomme beaucoup de ressources CPU. Comment puis-je l'optimiser ?

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

发表 评论

Votre adresse email ne sera pas publiée. 项 已 用 * 标注

Répertoire d'articles
Remonter en haut