Wir hatten kürzlich ungefähr 500 von Nginx selbst, die irgendwie nicht protokolliert wurden (wir haben Screenshots, aber nichts in den Protokollen). Das ist an sich schon komisch, weil dort normalerweise Fehler auftauchen. Unabhängig davon frage ich mich, ob es so etwas wie eine Verbindungspoolgröße gibt, die bei maximaler Auslastung zu 500 führen würde. Wir haben es möglicherweise mit einem jüngsten Anstieg des Verkehrsaufkommens korreliert, aber es ist nicht schlüssig.
Hat jemand eine Idee, wie man anfangen kann, sich einem solchen Problem zu nähern?
error_log
. Veröffentlichen Sie auch Ihre Konfigurationsdatei.Antworten:
Wir verwenden eine Kombination von Protokollformaten in Nginx und Lmon, um solche Dinge zu erfassen. Ein NGINX-Protokollformat wie:
Erfasst viele hilfreiche Diagnoseinformationen, z. B. den Upstream-Server, der die Anforderung bearbeitet hat, und setzt den Status in den Vordergrund, sodass das Lesen auch dann einfach ist, wenn die Protokolle ziemlich schnell durchlaufen.
Wir verwenden LMON, um diese Protokolle zu überwachen und uns dann zu benachrichtigen (Pager / E-Mail), wenn Fehler wie 500s, 503s, 400s in den Protokollen angezeigt werden:
http://www.bsdconsulting.no/tools/lmon-README
Dies kann Ihnen helfen, auf ein Problem aufmerksam zu machen, wenn es auftritt. Dies ist der einfachste Zeitpunkt, um es zu debuggen.
Die andere Sache, die Sie wahrscheinlich in Betracht ziehen sollten, wenn Sie dies noch nicht getan haben, ist, dass nginx eine 500 standardmäßig als schwerwiegenden Zustand betrachtet und keinen anderen Upstream versucht. Wenn Sie mehrere Upstreams haben, können Sie es so konfigurieren, dass es einen anderen verwendet, wenn es 500 erhält, was hoffentlich den Fehler des Benutzers verdeckt:
http://wiki.nginx.org/NginxHttpProxyModule#proxy_next_upstream
quelle
error_log $filename debug;
Aktiviert die Protokollierung auf Debug-Ebene im Fehlerprotokoll. Auf diese Weise erhalten Sie viele Details zum internen Status von nginx zum Zeitpunkt des Fehlers und, falls mit --with-debug kompiliert (was standardmäßig von mehreren Distributionen ausgeführt wird) Ich werde noch mehr geben.Seien Sie gewarnt, dass die "Debug" -Ebene wirklich viel Ausgabe generiert , bis zu dem Punkt, an dem Sie möglicherweise Ihren Speicherplatz überwachen möchten ...
quelle
In meinem Fall wurde die conf-Datei nicht korrekt benannt (war example.com anstelle von example.com.conf) und war nicht enthalten. Irgendwie führte dies nicht zu "Willkommen bei Nginx", sondern zu einem nicht protokollierten HTTP 500-Fehler. Nun, es wurde tatsächlich protokolliert, aber in der Fehlerdatei von einem anderen virtuellen Host, der mit dieser bestimmten URL nicht funktionieren konnte.
quelle