Optimisation du processus de configuration du modèle VestaCP phpfcgid épuisement multi-mémoire 500 erreurs

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 ▼

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.

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 ▼

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Remonter en haut