La solution au problème du trop grand nombre de processus php-fpm : sauvegardez d'abord le fichier de configuration d'origine ; puis utilisez vim pour ouvrir le fichier de configuration ; puis modifiez les paramètres de configuration et enfin redémarrez le serveur.
L'environnement d'exploitation de cet article : système CentOS 7, version PHP7.1, ordinateur DELL G3
Pourquoi y a-t-il aussi gérer de nombreux processus php-fpm ?
Résoudre le problème de consommation excessive des ressources mémoire du serveur dans CentOS 7 en raison d'un trop grand nombre de processus php-fpm
Qu'est-ce que php-fpm :
php-fpm est le gestionnaire de processus FastCGI, utilisé pour contrôler la mémoire et les 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
Réponse :
|-php-fpm---20*[php-fpm]
Selon la réponse Les informations affichées montrent qu'il y a 20 processus php-fpm lors de 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 recherchez 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 :
Explication des paramètres dans php-fpm.conf :
pm.max_children : Le nombre de processus php-fpm démarrés en mode statique.
pm.start_servers : Le nombre de processus php-fpm démarrant en mode dynamique.
pm.min_spare_servers : Le nombre minimum de processus php-fpm en mode dynamique.
pm.max_spare_servers : Le nombre maximum de processus php-fpm en mode dynamique.
Lorsque vous effectuez les réglages ci-dessus, j'ai défini le mode d'exécution de php-fpm sur dynamique :
pm = dynamique
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 selon le paramètre pm.start_servers. Après cela, le nombre de processus php-fpm sera maintenu entre le nombre spécifié par pm. min_spare_servers et pm.max_spare_servers.
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.
Apprentissage recommandé : "Tutoriel vidéo 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!