nginx erreurs readv() et recv() a échoué
J'utilise nginx avec fastcgi. Je vois beaucoup d'erreurs suivantes dans les journaux d'erreur
readv() a échoué (104: Connection reset
par les pairs) lors de la lecture en amont et
recv() a échoué (104: Connection reset
par les pairs) lors de la lecture en-tête de réponse
à partir de l'amont
Je ne vois pas de problème à l'aide de l'application. Ces erreurs graves ou comment se débarrasser d'eux.
OriginalL'auteur rampr | 2009-11-14
Vous devez vous connecter pour publier un commentaire.
J'ai été en utilisant php-fpm en arrière-plan et de ralentir les scripts ont été tuées après une dit délai d'attente parce qu'il a été configuré de cette façon. Ainsi, les scripts prennent de plus en plus d'un certain temps serait de se faire tuer et nginx ferait rapport une recv ou readv l'erreur que la connexion est fermée à partir de php-fpm moteur/processus.
oui php-fpm-lent journal. Pour activer ce journal, vous devez configurer php-fpm.conf
OriginalL'auteur rampr
Concernant cette erreur:
il y a 1 plus de cas où j'ai pu encore le voir.
Installation rapide aperçu:
les modules)
Après avoir regardé le PHP-FPM journaux d'erreur et l'activation de catch_workers_output = oui dans le php-fpm piscine de config, j'ai trouvé la cause dans cette affaire était en fait le amfext module (module PHP pour Flash).
Il y a un bug connu et corrigé pour ce module qui peut être corrigée en modifiant l'amf.c fichier.
Après la fixation de cette extension PHP problème, l'erreur ci-dessus n'était plus un problème.
OriginalL'auteur Paul G.
C'est une très vague erreur, car il peut signifier plusieurs choses. La clé est de regarder tous les possibles de journaux et de le comprendre.
Dans mon cas, ce qui est probablement unique en quelque sorte, j'ai eu un travail de nginx + php /fastcgi config. Je voulais compiler une nouvelle version mise à jour de PHP avec PHP-FPM et je l'ai fait. La raison était que je travaillais sur un serveur qui n'a pas pu permettre un temps d'arrêt. J'ai donc dû mettre à jour et passer à PHP-FPM de manière aussi transparente que possible.
Donc j'ai eu 2 cas de PHP.
(PHP 5.3.8)
Une fois que j'ai commencé à PHP-FPM (PHP 5.3.8) sur un nginx serveur virtuel à l'aide d'une connexion de socket au lieu de TCP j'ai commencé à faire en amont, ce erreur sur toute fastcgi page prend plus de temps que les x minutes s'ils utilisaient FPM ou pas. Typiquement, il y a des pages à faire de grandes SÉLECTIONNE dans mysql, qui a pris ~2 min à charger. Pis, je le sais, mais c'est parce que de retour fin DB design.
Ce que j'ai fait pour résoudre ce fut d'ajouter ça dans mon vhost de configuration:
fastcgi_read_timeout 5m;
Maintenant, cela peut être ajouté dans la nginx mondiale paramètres fastcgi. Cela dépend de votre configuration. http://wiki.nginx.org/HttpFcgiModule
OriginalL'auteur Paul Greene
Réponse # 2.
Ce qui est assez intéressant fastcgi_read_timeout 5m; fixe un vhost pour moi.
Cependant, j'étais encore à l'obtention de l'erreur dans un autre serveur virtuel, tout en exécutant la fonction phpinfo();
Qu'est-ce résolu ce fut pour moi d'en copiant un défaut de production de php.ini fichier et l'ajout de la config j'avais besoin.
Ce que j'ai eu était une vieille copie de mon php.ini à partir de la précédente installer PHP.
Une fois j'ai mis la valeur par défaut de php.ini de "partagée" et ont juste ajouté des extensions et de la config j'ai besoin, cela a résolu mon problème et je n'avais plus besoin de nginx erreurs readv() et recv() a échoué.
J'espère que 1 de ces 2 corrige aide à quelqu'un.
OriginalL'auteur Paul Greene
Il peut aussi être un très simple problème - il y a une infinité cicle quelque part dans votre code, ou une infinité d'essayer de se connecter à un hôte externe sur votre page.
OriginalL'auteur Funcraft
Certaines fois, ce problème se produit en raison de énorme de demandes. Par défaut, le
pm.max_requests
en php5-fpm est peut-être 100 ou au-dessous.Résoudre à augmenter sa valeur dépend de la votre site sur les demandes, Par exemple 500.
Et après l'avoir redémarrer le service
OriginalL'auteur shgnInc
D'autres ont mentionné la fastcgi_read_timeout paramètre, qui est situé dans la nginx.fichier conf:
En plus de cela, j'ai aussi dû changer le réglage request_terminate_timeout dans le fichier: /etc/php5/fpm/pool.d/www.conf
Source d'information (il y a aussi quelques autres recommandations de changement de php.ini paramètres, qui peut être pertinent dans certains cas): https://ma.ttias.be/nginx-and-php-fpm-upstream-timed-out-failed-110-connection-timed-out-or-reset-by-peer-while-reading/
OriginalL'auteur Rauni Lillemets
Si vous utilisez nginx pour se connecter à php-fpm, une cause possible peut également avoir nginx' fastcgi_keep_conn paramètre sur (surtout si vous avez un faible pm.max_requests configuration de php-fpm):
Cela peut entraîner le décrit erreur à chaque fois qu'un processus enfant de php-fpm redémarre (en raison de pm.max_requests) tandis que nginx est toujours connectés. Pour tester cela, pm.max_requests à un très faible nombre (comme 1) et voir si vous obtenez encore plus d'erreurs ci-dessus.
La solution est assez simple - il suffit de désactiver fastcgi_keep_conn:
Ou supprimer le paramètre de complètement (puisque la valeur par défaut est hors). Cela signifie que votre nginx vous reconnecter à php-fpm sur chaque requête, mais l'impact sur les performances est négligeable si vous avez à la fois de nginx et php-fpm sur la même machine et de se connecter via unix socket.
OriginalL'auteur FoxEcho