Maison > Article > développement back-end > Résoudre le problème de la consommation excessive de ressources mémoire du serveur causée par un trop grand nombre de processus php-fpm dans CentOS7
Avant-propos :
L'utilisation de la mémoire du serveur a été élevée récemment. Après vérification, il a été constaté que cela pouvait être lié au nombre excessif de processus php-fpm. Cet article enregistre mon processus d'optimisation du fichier de configuration php-fpm et ajoute quelques connaissances liées à php-fpm.
Qu'est-ce que php-fpm :
php-fpm est le gestionnaire de processus FastCGI, qui est utilisé pour contrôler la mémoire et le processus de php.
Environnement d'exploitation :
CentOS 7
Vérification du problème :
Vérifiez d'abord le nombre total de Processus php :
pstree|grep php-fpm
Echo :
|-php-fpm---20*[php-fpm]
Selon les informations d'écho, il y a 20 processus php-fpm pendant la requête.
Vous pouvez également lister les 50 principaux processus qui consomment le plus de mémoire via la commande suivante :
ps auxw|head -1;ps auxw|sort -rn -k4|head -50
Processus de solution :
Ci-dessous, nous modifions le fichier de configuration pour optimiser php-fpm afin de réduire l'utilisation de la mémoire.
Mon fichier de configuration php-fpm est dans le répertoire .../server/php/etc/, entrez dans ce répertoire.
Sauvegardez d'abord le fichier de configuration d'origine :
cp php-fpm.conf php-fpm.conf.bak
Remarque :
Après avoir utilisé vim pour ouvrir le fichier de configuration, appuyez sur la touche Échap puis saisissez "/", puis saisissez "xxx" pour rechercher la chaîne "xxx".
Les paramètres de configuration spécifiques sont les suivants :
pm.max_children = 100改为:pm.max_children = 25 pm.start_servers = 20改为pm.start_servers = 5 pm.min_spare_servers = 5改为pm.min_spare_servers = 2 pm.max_spare_servers = 35改为pm.max_spare_servers = 10
Redémarrez le serveur :
reboot
Après le redémarrage, vous pouvez constater que l'utilisation de la mémoire est inférieure à celle d'avant.
Remarque :
1. Description des paramètres dans php-fpm.conf :
pm.max_children:静态方式下开启的php-fpm进程数量。 pm.start_servers:动态方式下的起始php-fpm进程数量。 pm.min_spare_servers:动态方式下的最小php-fpm进程数。 pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
2. php -Le mode d'exécution de fpm est défini sur dynamique :
pm = dynamic
3.php-fpm a deux modes d'exécution :
L'un est statique et l'autre est dynamique. S'il est défini sur statique, seul le paramètre pm.max_children prendra effet. S'ils sont définis sur dynamique, les trois paramètres pm.start_servers, pm.min_spare_servers et pm.max_spare_servers prendront effet. Après l'avoir défini sur dynamique, lorsque php-fpm démarre, il démarrera le nombre de processus correspondant en fonction du paramètre pm.start_servers. Après cela, le nombre de processus de php-fpm sera maintenu entre le nombre spécifié par pm. .min_spare_servers et pm.max_spare_servers.
4. Comment choisir d'utiliser le mode d'exécution statique ou dynamique de php-fpm :
Le mode d'exécution dynamique de php-fpm permet à php-fpm de libérer les processus redondants, économisant ainsi les ressources mémoire .
La méthode d'exécution statique de php-fpm ne permet pas à php-fpm de libérer plus que des processus, évitant ainsi le démarrage ou l'arrêt fréquent du processus php-fpm, réduisant ainsi le temps de réponse du serveur dans certains cas.
Pour plus de connaissances sur PHP, veuillez visiter le Tutoriel PHP !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!