Mysql
 sql >> Base de données >  >> RDS >> Mysql

FastCGI PHP aléatoire / Réinitialisation de la connexion par un pair / en-têtes incomplets

Ce problème n'est généralement pas seulement spécifique à l'hôte, il est également lié au développeur, selon la configuration. Cependant, certains hôtes sont plutôt stricts avec FastCGI et limiteront vos capacités. Il est généralement plus facile de s'exécuter sans utiliser FastCGI et utilisez simplement mod_php à moins que vous avez un besoin spécifique d'utiliser FastCGI dans votre application.

Nous aurions besoin de voir votre wrapper fcgi (ce qu'il y a dans /dev/shm/blackmou-php.fcgi) ou .htaccess pour le frai FastCGI, pour mieux vous aider sans savoir avec quels fichiers et le code qui se trouve sur ces fichiers le problème se produit. Vos hôtes utilisent-ils également Apache, LightHttpd ou Nginx (ou une combinaison) ? À ce stade, je suggère fortement de mettre à jour pour utiliser PHP 5.3.9+

Comme cela peut être causé par un certain nombre de problèmes, FastCGI empêche efficacement votre site/scripts d'être attaqués par un déni de service ou de planter en raison de fuites de mémoire, etc. de requêtes ou de rester coincé dans une boucle sans fin en expirant et en mettant fin au processus)

Cette erreur en particulier est généralement causée par un idle_timeout (30 secondes par défaut) ou une limite maximale de processus enfants. Elle peut également être causée par quelqu'un qui démarre un long script et ferme son navigateur/connexion avant la fin du script.

FastCGI lance son wrapper de processus, exécute une commande, expire avant la fin du processus, la connexion est considérée comme réinitialisée par le pair.

Un autre exemple est que le nombre maximum d'enfants (maxProcesses) est atteint (par exemple :de nombreux sites affichent 2 ou 4 à titre d'exemple alors qu'en réalité, vous pouvez en avoir besoin de 20 ou 50 en fonction du trafic moyen) Si tous les enfants sont actuellement actifs et une requête supplémentaire/ connexion est établie, les enfants sont limités à maxProcesses, auxquels FastCGI ne partagera pas les enfants actifs, il doit donc d'abord terminer le processus et démarrer un nouveau processus enfant, ou abandonner la requête, selon vos configurations.

Voici quelques informations supplémentaires sur les paramètres :

http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

http://www.fastcgi.com/drupal/node/10

Exemple d'encapsuleur

PHP_FCGI_CHILDREN=0 #no limit
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS

MISE À JOUR

Pour ajouter à cela, cela peut également être causé par la limite de mémoire php

Si ce qui précède ne résout pas votre problème, mettez à jour votre php.ini pour augmenter memory_limit