Bei der technischen Unterstützung für Kunden sehen wir oft überhaupt die Anomalien vieler Kunden. Nachdem diese Anomalien beseitigt wurden, wurde der Code -Laufgeschwindigkeit im Vergleich zu zuvor erheblich verbessert. Auf diese Weise können wir vermuten, dass die Verwendung von Anomalien im Code einen erheblichen Leistungsaufwand bringt. Da Anomalien ein wichtiger Bestandteil der falschen Situation sind, müssen wir die Auswirkungen einer abnormalen Behandlung auf die Leistung messen.
Experiment
Mein Experiment basiert auf einem einfachen einfachen Code, der zufällig wirft. Aus wissenschaftlicher Sicht ist dies keine völlig genaue Messung, und gleichzeitig weiß ich nicht, wie der Betriebscode im laufenden Code durchgeführt wird. In jedem Fall sollte dieser Code es uns jedoch ermöglichen, einige grundlegende Situationen zu verstehen.
Das Ergebnis ist sehr interessant: Die Kosten für das Werfen und Erfassen von Anomalien scheinen extrem niedrig zu sein. In meinem Beispiel sind es ungefähr 0,02 Millisekunden. Wenn Sie nicht wirklich zu viele Anomalien werfen (wir meinen 100.000 oder mehr), wird dies im Grunde genommen ignoriert. Obwohl diese Ergebnisse zeigen, dass eine abnormale Verarbeitung selbst keinen Einfluss auf die Codeleistung hat, hat sie das folgende Problem nicht gelöst: Wer ist für die enormen Auswirkungen auf die Leistung verantwortlich?
Ich habe offensichtlich wichtige Probleme verpasst.
Nachdem ich noch einmal darüber nachgedacht hatte, wurde mir klar, dass ich einen wichtigen Teil der abnormalen Behandlung verpasst habe. Ich habe nicht darüber nachgedacht, was Sie getan haben, als Anomalien passierten. In den meisten Fällen ist es wahrscheinlich nicht nur, Anomalien zu erfassen! Das Problem ist hier: Im Allgemeinen werden Sie versuchen, das Problem zu ergänzen und die Anwendung noch mit dem Endbenutzer abspielen zu lassen. Also, was ich vermisst habe, ist: "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " - Abhängig vom unterschiedlichen Code kann der Leistungsverlust sehr signifikant werden. In einigen Fällen kann dies bedeuten, sich auf die Verbindung zum Server zu konzentrieren, und in anderen Fällen kann dies die Verwendung der Standard -Rollback -Lösung bedeuten, und die von dieser Lösung bereitgestellte Lösung bringt definitiv eine sehr schlechte Leistung. Dies scheint eine gute Erklärung für das Verhalten zu geben, das wir in vielen Fällen sehen.
Ich glaube jedoch nicht, dass die Analyse hier alles ist, aber ich habe das Gefühl, dass hier etwas anderes vermisst wurde.
Stapelspur
Ich bin immer noch neugierig auf dieses Problem, und aus diesem Grund habe ich überwacht, wie sich die Leistung beim Sammeln der Strack Trace ändert.
Dies ist häufig der Fall: Versuchen Sie herauszufinden, wo sich das Problem befindet.
Aus diesem Grund habe ich den Code geändert und die abnormale Strack Trace gesammelt. Dies hat die Situation erheblich verändert. Der Leistungseffekt auf die Sammlung einer abnormalen Streifenspur ist 10 -mal höher als das einfache Erfassen und Auswerfen von Anomalie. Obwohl Strack Trace hilft, zu verstehen, wo Probleme auftreten (es kann helfen, zu verstehen, warum Probleme auftreten), gibt es Leistungsverluste. Da wir nicht über eine Strack -Spur sprechen, ist der Einfluss hier oft sehr großartig. In den meisten Fällen müssen wir Abnormalitäten auf mehreren Ebenen werfen und festhalten. Schauen wir uns ein einfaches Beispiel an: Der Webdienst -Client ist mit dem Server verbunden. Erstens gibt es in der Java -Bibliotheksebene eine Anomalie. Seitdem wird es auf Rahmenebene abnormale Kunden geben, und in Zukunft können abnormale Geschäftslogikanrufe auf Anwendungsebene stattfinden. Bisher müssen insgesamt drei Streifenspuren gesammelt werden. In den meisten Fällen können Sie diese Streifenverfolgung von Protokolldateien oder Anwendungsausgaben sehen und diese lange Streifenverfolgung häufig auch Leistungseffekte haben.
abschließend
Erstens ist es nicht gut, aufgrund der Auswirkungen der Leistung abnormale Anomalien zu verwerfen. Ungewöhnlicher hilft dabei, eine konsistente Möglichkeit zu bieten, die Betriebsprobleme zu lösen und sauberen Code zu schreiben. Wir sollten jedoch die in den Code geworfene abnormale Menge verfolgen, die zu erheblichen Leistungseffekten führen kann. Daher muss ONEAPM die standardmäßigen Abnormalitäten verfolgen. In vielen Fällen werden die Menschen von den Abnormalitäten des Codes und dem Leistungsverlust bei der Lösung dieser Anomalien überrascht sein. Zweitens sollten Sie, obwohl es sehr vorteilhaft ist, zu viel Streifenspur zu erfassen. Anomalien sollten für abnormale Bedingungen ausgelegt sein, und dieses Prinzip sollte bei der Verwendung berücksichtigt werden. Wenn Sie keine guten Programmiergewohnheiten befolgen möchten, werden Sie die Java -Sprache natürlich wissen, dass dies Ihr Programm schneller läuft und Sie dazu ermutigen kann.
Das obige ist der gesamte Inhalt dieses Artikels.