Ok, unser neuer Build hat 100% CPU-Spitzen auf jedem Server in zufälligen Intervallen. Für lange Zeiträume reagiert die Site nicht mehr - dies ist zu Spitzenzeiten der Fall, wenn sich Personen in verschiedenen Ländern auf der Site anmelden usw.
Wir haben uns Perfmom, Speicherprofiler, CLR-Profiler, SQL-Profiler, Red Gate Ameisen-Profiler angesehen und Lasttests in UAT versucht - können das Problem jedoch nicht einmal reproduzieren. Dies könnte bedeuten, dass nur Tausende von Benutzern, die die Live-Site besuchen, dies verursachen.
Ein Muster, das wir bemerkt haben, war, dass der neue Code - der kaputte Build - tatsächlich deutlich weniger Threads verwendet.
Wir verwenden Frühling auch für IOC - hat dies einen guten Ruf im Bett?
Um die Sache noch schlimmer zu machen, können wir aufgrund der geschäftlichen Auswirkungen keine Bereitstellung für das Leben bereitstellen. Daher können wir das Problem nicht auf eine Teilmenge der neuen Funktionen eingrenzen, die wir hinzugefügt haben.
Wir sind wirklich zerstört - hat jemand Kampfnarben, die uns ein paar Leben retten könnten?
Antworten:
Ich schlage vor, Speicherabbilder zu erstellen und diese in WinDdg mit Sos zu analysieren. Ich habe einige Probleme in unserer Produktion behoben, die ich ohne WinDbg wahrscheinlich nicht diagnostizieren könnte.
Tess Fernandez hat einen großartigen Blog, in dem Sie lernen können, wie man Speicherabbilder analysiert.
quelle
Dies wird normalerweise durch eine große, langlebige Objektbereinigung im GC verursacht ( Stackoverflow hatte dieses Problem, siehe Link ). Speichern Sie viele Objektsammlungen im Cache oder in der Sitzung?
Angriff durch GC
Ich empfehle Ihnen auch, einen neuen Server in der Produktion zum Testen zu erstellen und zu konfigurieren. Wenn Sie zufällige Verrücktheit haben und nicht wissen, warum und nicht reproduzieren können, würde ich den Finger auf Hardware oder Konfiguration richten, nicht auf Code.
quelle
Ist dies ein virtueller Server mit gemeinsam genutzten Ressourcen oder ein physischer Server? Wenn es das erstere ist, könnten Sie vielleicht versuchen, Ressourcen für diesen Server bereitzustellen. Viel Glück...
quelle
Versuchen Sie es mit einem
cache server
als FrontendApache Traffic Server (ATS)
.Dies wird das Problem zwar nicht lösen, es kann jedoch hilfreich sein, es zu identifizieren, da Sie gleichzeitig die potenziell schädliche Last aus dem Backend entfernen (um festzustellen, ob das Frontend ebenfalls Probleme aufweist) und die Dinge im Backend weniger heiß werden lassen leichter zu erkennen, was los ist.
quelle
Der Versuch, den Fehler ohne die Daten zu erraten, ist sinnlos. Ja, jemand im Stackoverflow oder in Ihrem Engineering-Team hat möglicherweise Glück, aber das ist nur schlechtes Engineering, und Sie können nicht planen, wie lange Sie brauchen, um jede Vermutung zu versuchen, und ob Sie das Problem überhaupt finden würden.
Die 100% CPU ist ein wenig verdächtig in dem Sinne, dass es unwahrscheinlich ist, dass es sich um E / A handelt (vorausgesetzt, die Datenbank ist eine andere Box, sollte eine langsame Datenbank keine 100% CPU auf den Webservern verursachen). Sie müssen näher zu Hause schauen.
quelle