Je reçois actuellement une inondation HTTP assez importante, et mon proxy inverse nginx génère une passerelle 502 Bad.
J'ai un serveur frontal exécutant nginx en tant que proxy sur mon serveur principal, mais il ne fait que recevoir un tas d' connect() failed (110: Connection timed out) while connecting to upstream
erreurs. Des tonnes d'entre eux. Si je contourne le serveur proxy pour me connecter au backend, je peux très bien utiliser le site. Je sais donc qu'il se trouve quelque part dans le proxy inverse. Cependant, je ne sais pas comment déterminer pourquoi le délai est écoulé.
De l'aide?
exécuter nginx 1.2.3 sur CentOS 6.2
Réponses:
Je suppose que vous avez déjà augmenté votre niveau de consignation des erreurs Nginx au débogage. Sinon, commencez par là.
Votre meilleur pari utilisera probablement
strace
pour voir les appels système passés par Nginx. En particulier, vous voudrez faire attention auxconnect()
appels et garder un œil sur les codes de retour de ceux-ci (man 2 connect
peut être votre ami ici).Une fois que vous avez ces informations, vous pouvez mieux deviner si le problème est limité à votre proxy frontal ou s'il a quelque chose à voir avec les interactions entre le proxy et le serveur d'applications principal.
la source
Cela ne devient pas beaucoup plus pédant que cela sauf si vous souhaitez mettre en place des sondes dtrace:
Définissez le niveau du journal de débogage: /etc/nginx/nginx.conf:
Configurez tcpdump dans une autre fenêtre:
Surveillez les fichiers journaux dans une autre fenêtre:
Démarrage nginx interactif avec strace:
Et alors
Un débogage supplémentaire peut être effectué avec un nginx compilé avec
--with-debug
. Vérifiez-le en exécutant:Un autre bon module non compilé par défaut est: HttpStubStatusModule . Selon toute vraisemblance, toute installation décente nécessitera un nginx compilé sur mesure (emballage hautement recommandé à l'aide des outils d'emballage de distro).
La plupart d'entre elles ne conviennent pas à une utilisation en production. Compilez nginx avec gperf si vous avez besoin de plus de statistiques.
la source
On dirait que vous déboguez un site à fort trafic.
Utilisation
debug
avec ladebug_connection
directive si l' erreur nginx journal affiche les journaux de débogage de votre IP uniquement.Une fois que vous commencez à voir des journaux d’erreur utiles plutôt que d’activer l’option de débogage pour toute la configuration de nginx, ajoutez une
error_log /path/to/some/file/ debug;
directive distincte dans lelocation {..}
bloc responsable de la connexion reverse_proxy.De cette façon, vous pourrez uniquement isoler le journal des erreurs de débogage de votre adresse IP.
Essayez de le relier avec la demande que vous faites (à partir de votre navigateur).
Par exemple, s'il vous plaît vérifier: https://easyengine.io/tutorials/nginx/debugging/
Un niveau d'avance, vous pouvez utiliser HttpEchoModule de Nginx
la source
Je n'ai jamais trouvé que Nginx soit un goulot d'étranglement, dans la plupart des cas, il est plus que capable que ses extrémités. Mais si vous avez testé sans Nginx et n’avez trouvé aucune erreur, alors ce sera soit (ou les deux):
Sans voir vos configurations Nginx, personne ne peut commenter les précédentes. Et sans sorties appropriées du système d'exploitation, personne ne peut commenter ce dernier.
la source