Warum Stack Trace APM nicht genug für eine vollständige Webanwendungsüberwachung ist

Stapel und Ebenen

Es ist wahrscheinlich wahr zu sagen, dass, wenn Sie einen durchschnittlichen Benutzer fragen, was eine großartige Web-Anwendung macht, würden sie wahrscheinlich sagen “Geschwindigkeit”. Aber Geschwindigkeit ist der wohl am wenigsten wichtige Aspekt eines umfangreichen Überblicks über Elemente. Faktoren wie Anwendungsentwicklung und Rendering im Programm sind wahrscheinlich höher in dieser Liste. Und was macht eine großartige Performance-Anwendung aus? Und wenn etwas schief geht, woher wissen Sie das? Dies sind einige der Fragen, die Stack Trace Monitoring und synthetische Webanwendungsleistungsüberwachung beantworten müssen. Beide haben ihre Vor- und Nachteile, aber dieser Artikel wird sich darauf einstellen, zu erklären, was ein besseres Werkzeug macht, um sicherzustellen, dass die Erfahrung des Benutzers an vorderster Front bei der Bestimmung, was eine großartige Web-Anwendung macht.

 

Was ist eine Stack Trace?

Eine Stapelablaufverfolgung ist ein nützliches Untersuchungsinstrument. Es zeigt den “Call Stack”, die Stapel von Funktionalitäten/Methoden, die bis zum aktuellen Zustand der Programmausführung aufgerufen wurden, zu der Zeit ein unbekannter Sonderfall wurde vom Compiler (oder dem Moment, als Stack Trail physisch produziert wurde) hingeschartet.

Dies ist außerordentlich wertvoll, da es Ihnen nicht nur gibt, wo der Fehler aufgetreten ist, es kann Ihnen auch einen Einblick geben, wie das Programm an diesem Punkt des Programms aufgewickelt wurde. Ziel ist es, die Methoden bereitzustellen, die bis zum Absturz des Programms aufgerufen wurden, und gibt einen Überblick über die Methodenaufrufe, die die Anwendung erlebt hat. Es hilft uns, einen Sinn dafür zu machen, wie etwas so ausgefallen ist, wie es war, und zeigt eine Gelegenheit, den Fehler zu korrigieren. Ohne diese Ablaufverfolgung würden diese Aktionen nicht berücksichtigt, und alle Fehler würden stumm werden. Der Dienst wird in der Folge zu einer “Black Box”.

 

Was ist eine Ausnahme?

Eine Ausnahme ist die Bedingung, die die Laufzeitbedingung verwendet, um uns zu informieren, dass ein Fehler aufgetreten ist. Bekannte Modelle sind NullPointerException, IndexOutOfBoundsException oder ArithmeticException. Jeder von ihnen wird verursacht, wenn Sie versuchen, etwas zu erreichen, das buchstäblich unvorstellbar ist (durch den Computer, der ist). Beispielsweise wird eine NullPointerException ausgelöst, sobald Sie versuchen, auf einen UngültigenArtikel zu verweisen.

 

Exception

 

Das obige Bild zeigt eine Stapelablaufverfolgung. Wir beginnen mit dem Beginn der Stichwahl von “bei …“, können wir feststellen, wo der Fehler aufgetreten ist. Was wir versuchen zu entdecken, ist die erste Begegnung eines Methodenaufrufs, der ein Teil unserer Anwendung sein könnte oder ein Teil der Module in der Anwendung verwendet wird. Für diese Situation ist der Täter “unter com.example.myproject.Book.getTitle(Book.java:16).” Wir können folglich die Book.java und werfen Sie einen Blick auf Zeile 16. Dies ist ein grundlegender Fall dafür, was passiert, wenn wir einen Stapel zurückverfolgen.

Ebenso kann sie auch durch eine Kette von Ausnahmen wie die folgenden eingeführt werden:

 

Exemptions

 

Der Schuldige in diesem Fall ist, wo es beginnt bei “Verursacht von: java.lang. NullPointerException unter com.example.myproject. Buchen Sie.getId(Buch.java:22) unter com.example.myproject. Author.getBookIds(Autor.java:36)

Das Besondere an diesem ist die “Caused by” Klausel. Ab und zu werden Ausnahmen verschiedene “Verursacht durch” Bereiche haben. In einigen Fällen müssen Sie den “basisgebundenen Treiber” durchsuchen, der eines von vielen solchen Segmenten innerhalb der Rückspur sein kann.

 

Wie Code von Drittanbietern den Stack-Backtrack beeinflusst

Aktuelle Anwendungen haben häufig zahlreiche Ebenen von Funktionsaufrufen, die quer ausgelöst werden (d. h. eine Funktion, die andere aufruft oder in einigen Fällen selbst). Um die Dinge immer verwirrender zu machen, haben wir regelmäßig zahlreiche Ebenen von Programmiercode, die der Aufrufliste hinzufügen. Code aus unserer Laufzeit oder importierten Bibliotheken kann die Reinheit unserer Aufrufliste reduzieren, wodurch es schwierig ist, beim Korrigieren von Ausnahmen durchzusehen oder zu entwirren. Jetzt denken Sie vielleicht: “Was bedeutet dieser Ausgabeblock, um mir zu helfen, Fehler zu identifizieren?”

 

Wie Call Stacks und Traces bei der Ausführung helfen

Bis zu diesem Zeitpunkt haben wir hauptsächlich über Codefehler gesprochen, nicht über die Ausführung. An dem Punkt, an dem ein Fehler auftaucht, müssen wir die Bedingungen isolieren, die sein Aussehen umfassen, und diejenigen wiedergeben, um den Fehler zu reproduzieren. Und im Falle der Leistung brauchen wir einen Ansatz, um die oben genannten Techniken auch zu erreichen. Wir müssen die aktuellen Rahmenbedingungen simulieren, unsere aktuellen Umstände überdenken, notwendige Änderungen vornehmen und Vorschauen der aktuellen Rahmenbedingungen wiederholen, um die Ergebnisse zu analysieren.

Die Ausführungsoptimierung beginnt mit dem Aufdecken, Schätzen und Aktualisieren, um die größten Engpässe zu verringern. Als Hersteller von Leistungsoptimierungsmodulen müssen wir dieses Verfahren der Messung, Aktualisierung und Optimierung nur zu gut kennen. Dies ist der Moment, in dem Anruflisten uns bei der Untersuchung dieses Prozesses helfen können. Um die gesammelten Informationen zu erhalten, verwenden wir im Wesentlichen allgemeines Profiling als unsere Praxis. An dem Punkt, an dem das Profil auftritt, nimmt es gelegentliche Darstellungen des aktuellen Zustands der Aufrufliste. An dem Punkt, an dem wir unsere Momentaufnahme von Informationen haben, sind wir bereit, die Codeblöcke zu sehen, die immer und immer wieder angezeigt werden, und auf diese Weise kann eine Wiederholung eine Möglichkeit für Leistungsverbesserungen darstellen. Aber um ganz sicher zu sein, müssen wir unser Verfahren für diese Systemrahmenmessungen verstehen. Allerdings gibt es hier ein Problem. Die Stapelablaufverfolgung hat ihre eigenen Einschränkungen. Eine Schneideanwendung umfasst zahlreiche Berechnungen und damit viele Aufruflisten. Wie werden wir also vernünftigerweise die Berge von Informationen durchfiltern und verstehen?

 

Stack-Ablaufverfolgungseinschränkungen

Ab und zu können Sie nicht sicherstellen, dass Sie keinen Fehler erhalten. Wenn Sie z. B. eine webgesteuerte Anwendung in Ihrem Programm verwenden, können Sie nicht verhindern, dass der PC seine Webzuordnung verliert (z. B. können Sie den Client nicht daran hindern, das Systemnetzwerk des PCs zu lösen). Was jetzt passiert, ist, dass die Systembibliothek uns mit einer Ausnahme behandelt. In einer perfekten Welt ist dies der Punkt, an dem die Ingenieure den Sonderfall “fangen” und verwalten. Dies bedeutet, dass Sie im Modell mit netzwerkzuordnung versuchen sollten, die Zuordnung wiederzubeleben oder den Client zu informieren. Der Ingenieur muss sich daran erinnern, während er die Ausnahme erhielt, dass sie den Fall erfassten, den sie erwartethatten, also sollten sie keine weit reichenden Proklamationen wie “Ausnahme e” verwenden, die alle Ausnahmen erhalten würden. Dies stellt sich als ein entscheidender Faktor bei der Stapelverfolgung heraus. Es fängt nicht die Sonderfälle, die in einer bestimmten Weise behandelt werden mussten, sondern wurden auf eine völlig andere Art und Weise behandelt.

Stack-Tracing-Tools sind nicht das geringste Bisschen narrensicher in Bezug auf Überwachungsanwendungen. Die Inhalte sind schwer zu kompilieren, schwer zu verstehen und zu zerlegen und anfällig für erschöpfende Fehler.

 

Synthetische Überwachung

Im Gegensatz zu Stack Trace-Tools funktioniert die synthetische Überwachung, indem simulierte Benutzeraustausche/Transaktionen für Ihre Anwendung erstellt werden, die sich als imitiert, wie ein durchschnittlicher Benutzer oder Client Ihre Anwendung durchlaufen kann. Es kann innerhalb der Firewall, innerhalb des Serverbereichs angewendet werden, um sicherzustellen, dass alle Computer ordnungsgemäß ausgeführt werden, oder außerhalb der Firewall, um Daten über Barrierefreiheit und Ausführung aus einer weltweiten Sicht zu erhalten. Diese Serveraufrufe und Testinhalte werden zu Überwachungsinstrumenten, indem sie mit vordefinierten Frequenzen ausgeführt werden, z. B. alle 5 Minuten oder alle 3 Stunden.

Diese Art der Überwachung kann für Ihr Unternehmen von grundlegender Bedeutung sein, da sie es Ihnen ermöglicht, Probleme zu unterscheiden und zu untersuchen, ob Ihre Website oder Anwendungen optimiert werden müssen, bevor Endkunden wirklich betroffen sind. Da diese Art der Überprüfung nicht von echtem Webdatenverkehr abhängig ist, kann eine Webanwendung oder -seite jederzeit von überall aus überwacht werden, und Überwachungs-Agenten können eingerichtet werden, bevor Anwendungen in die Produktion gehen. Aus diesem Grund neigen viele Entwickler zu synthetischer Überwachung, da sie 24/7 Transparenz bietet und der Organisation den Hebel bietet, Umfehler zu beheben, bevor Kunden darauf stolpern.

 

Benötigen Sie eine synthetische Überwachung?

Die am wenigsten komplexe Antwort auf diese Frage ist, dass Sie Hilfe benötigen, um sicherzustellen, dass Ihre Anwendung oder Website einsatzbereit ist. Aber in einem viel technischeren Hinweis geht die echte Antwort auf diese Anfrage viel weiter. Ein Qualitätsüberwachungs-Agent pingt nicht einfach Ihre Website, um sicherzustellen, dass sie verfügbar ist. Qualitätsverwaltungen überprüfen Bereichsnamenframeworkdatensätze, Übertragungsgeschwindigkeit, Datenbank sowie Systemverfügbarkeit, CPU-Last, Laufwerkspeicher, Ereignisse, RAM und andere grundlegende Faktoren. Während Betriebszeit und Reaktionszeit zweifelsohne wichtige Dinge zu quantifizieren sind, sind die Zuverlässigkeit und Konsistenz Ihrer Anwendung oder Seite zusätzlich wichtig und Messungen und müssen so eingerichtet werden, dass sie für diese Dinge überprüft werden.

Darüber hinaus ist es nicht ausreichend, nur die Barrierefreiheit und Dieverfügbarkeit Ihrer APIs und Anwendungen innerhalb Ihrer Firewall zu überprüfen, wenn Sie eine erstklassige Erfahrung bieten möchten. Benutzer können von überall auf der Welt auf Ihre Anwendungen zugreifen, von unterschiedlichen Geräten, Browsern und Netzwerkenaus. Synthetische Überwachung ermöglicht es Ihnen, diese Geschäftsabläufe oder Kundenaustausche zu imitieren, z. B. anmelden, nach Artikeln suchen, Formulare/Umfragen ausfüllen, Einkaufswagen hinzufügen, sich von verschiedenen Standorten auf der ganzen Welt abmelden und deren Leistung überprüfen. Sie könnten dann Ausführungsdetails zwischen geografischen Standorten und Schritten in den Exchange analysieren und beginnen, Ihre Verbesserungspläne zu definieren.

 

Stack Trace und synthetische Überwachung: Fazit

Synthetische Überwachung verfolgt einen externen proaktiven Ansatz, um Probleme zu erkennen, bevor Ihre Kunden dies tun. Für den Fall, dass die richtigen Verfahren verwendet werden, kann die synthetische Überwachung Ihnen den gleichen Blickwinkel auf Ihre Endbenutzer und Kunden geben, ganz zu schweigen davon, wie sie abschneiden – und ob Kunden mit der Erfahrung zufrieden sind. Dies ist bei der Stapelablaufverfolgung nicht der Fall. Es ist zweifellos ein sehr zuverlässiges und kompetentes Analyseprotokoll, aber es kann nur die Schritte eines fehlgeschlagenen Ereignisses in der vorhergehenden Weise verfolgen. Dies bringt uns zu einem sehr festen Verständnis, dass Stack-Tracing, kombiniert mit synthetischer Überwachung, dazu beitragen kann, den kompletten Stack zusammenzubinden und eine leistungsstarke Performance-Überwachungslösung bereitzustellen. Testen Sie die vollständige Dotcom-Monitor Plattform 30 Tage lang kostenlos.

 

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on email
Email
Share on print
Drucken