Après avoir sélectionné le modèle « phpfcgid » pour le service web VestaCP , un grand nombre de processus PHP-CGI ont rapidement épuisé la mémoire.
- Je manquais de mémoire pendant quelques heures après le redémarrage du serveur.
- Le processus PHP-CGI précédemment inactif n'est pas tué et un processus exécute près de 1 sous-processus, consommant au moins 20 Mo de mémoire.
Utilisé dans SSH htop commande (installation requise), vous pouvez afficher cet état ▼

Si vous obtenez un message d'erreur "-bash: htop: command not found" lorsque vous utilisez la commande htop, veuillez consulter ce tutoriel pour la solution ▼
Le grand nombre de processus PHP-CGI a entraîné une saturation rapide de la mémoire. Ce problème provient du fait que VestaCP utilise une configuration non optimisée dans le modèle phpfcgid de CentOS .
- VestaCP dans le modèle phpfcgid, définissez 1 processus PHP-CGI pour exécuter jusqu'à 20 processus enfants.
参阅 /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Ligne 13 du fichier :
export PHP_FCGI_CHILDREN=20
Cependant, une telle configuration enfreint l'avertissement d'Apache dans la documentation de gestion des sous-processus PHP :
La gestion des processus enfants PHP ( PHP_FCGI_CHILDREN ) doit toujours être désactivée avec mod_fcgid, car ce dernier ne traite qu'une seule requête à la fois par les processus applicatifs qu'il a créés ; par conséquent, les processus enfants créés par PHP ne seront pas utilisés efficacement. (De plus, leur arrêt pourrait ne pas être correct.) Par défaut, et lorsque la variable d'environnement PHP_FCGI_CHILDREN est définie sur 0 , la gestion des processus enfants PHP est désactivée.
Parce que dans le module mod_fcgid d'Apache, le processus PHP-CGI ne peut répondre qu'à une requête et s'exécuter à la fois, le processus enfant PHP-CGI est très inefficace.
Par conséquent, les paramètres de gestion des sous-processus PHP doivent être désactivés directement ▼
PHP_FCGI_CHILDREN=0
En même temps, si vous avez déjà un hôte virtuel généré, vous devez modifier les fichiers de configuration de tous les sites Web ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
Après avoir ouvert le fichier de configuration fcgi-starter, insérez ce qui suit ▼
export PHP_FCGI_CHILDREN=20
Modifié en ▼
export PHP_FCGI_CHILDREN=0
- Après modification, la gestion des sous-processus PHP sera désactivée en mode mod_fcgid.
- Le processus PHP-CGI ne générera plus de processus enfants, ce qui peut économiser beaucoup de mémoire.
De plus, VestaCP ne définit pas de mécanisme de terminaison pour les processus inactifs :
- Tous les processus PHP-CGI nouvellement exécutés continueront à utiliser de la mémoire jusqu'au redémarrage du système.
Pour résoudre ce problème, ajoutez simplement le fichier de configuration mod_fcgid /etc/httpd/conf.d/fcgid.conf Ajoutez les paramètres suivants dans ▼
FcgidIdleTimeout 120
- Configurez Apache pour qu'il tue automatiquement les processus PHP-CGI qui sont inactifs pendant 2 minutes (120 secondes).
Une fois la configuration terminée, redémarrez le service Apache ▼
service httpd restart
Après le redémarrage du service, les centaines de processus PHP-CGI qui étaient précédemment affichés dans HTOP ne seront plus affichés.
En règle générale, un seul processus PHP-CGI pour un seul utilisateur Vesta CP consomme de 30 à 40 Mo de mémoire, ce qui est largement suffisant pour un hôte Linux .
Par conséquent, l’optimisation de la configuration du contenu et des modèles Vesta est cruciale pour les spécialistes du marketing en ligne qui souhaitent exceller en matière de référencement .
Vous pouvez consulter les tutoriels suivants sur le panneau VestaCP ▼
Nous espérons que l'article « Optimisation de la configuration du modèle VestaCP phpfcgid pour l'erreur 'Multiple Processes, Memory Exhaustion 500 Error' » publié sur le blog de Chen Weiliang ( https://www.chenweiliang.com/ ) vous sera utile.
N'hésitez pas à partager le lien de cet article : https://www.chenweiliang.com/cwl-735.html



