Leitfaden Entwicklungshandbuch

Finden Sie den Performance-Killer

Die Leistungsoptimierung von Online-Diensten ist fast abergläubisch. Eine Gruppe von Programmierern sah sich einer großen Menge unverständlichen Codes gegenüber und vermutete, ob die andere Partei die gesamte CPU verwendete. Verbringen Sie viel Zeit damit, Protokolle aufzuzeichnen, blättern Sie Tag und Nacht durch die massiven Protokolle und versuchen Sie, den Leistungskiller zu finden.

Mit Fibjs wird dies jedoch einfacher. Weil fibjs eine leistungsstarke CPU- und Speicherprofiler-Unterstützung bietet und sehr bequem zu bedienen ist.

Log

Fibjs ist extrem einfach, um den CPU-Profiler zu starten. --prof beim Starten einfach die Option --prof . Das Standardprotokollintervall beträgt 1000 ms. Mit der Vertiefung der Optimierung müssen Sie Protokolle mit höherer Genauigkeit analysieren. Zu diesem Zeitpunkt können Sie das Intervall mit --prof-interval festlegen. Im folgenden Beispiel wird das Arbeitsprotokoll von fibjs alle 10 ms aufgezeichnet.

1
fibjs --prof --prof-interval=10 main.js

Verarbeitungsprotokoll

Nachdem der Vorgang normal beendet oder der Prozess mit ctrl_c beendet wurde, wird eine Protokolldatei im aktuellen Verzeichnis generiert. Der Dateiname lautet fibjs-xxxx.log . Zu diesem Zeitpunkt können Sie das generierte Protokoll mit --prof-process verarbeiten:

1
fibjs --prof-process fibjs-xxxx.log prof.svg

Öffnen Sie am Ende des Vorgangs prof.svg mit einem Browser, um das Flammendiagramm dieses Protokolls anzuzeigen: prof Sie können klicken, um das Bild in voller Größe anzuzeigen. Im Bild in voller Größe können Sie mit der Maus detailliertere Informationen anzeigen : prof.svg .

Interpretation des Flammendiagramms

In dem erzeugten Flammengraphen stellt jeder Farbblock einen Aufzeichnungspunkt dar. Je länger der Farbblock ist, desto öfter wurde er aufgezeichnet, jede Zeile stellt eine Schicht des Aufrufstapels dar und je mehr Schichten, desto mehr Schichten werden aufgerufen; Die Platzierung des Stapels ist invertiert. Je niedriger der Farbblock, desto mehr die ursprüngliche Funktion.

Es gibt zwei Arten von Farbblöcken: einen roten und einen blauen. Im Profiler von fibjs steht Rot für JavaScript-Operationen und Blau für Io-Operationen oder native Operationen. Je nachdem, welches Problem Sie lösen müssen, ist der Bereich, auf den Sie sich konzentrieren müssen, unterschiedlich. Wenn Sie beispielsweise das Problem der hohen CPU-Auslastung lösen müssen, müssen Sie zu diesem Zeitpunkt auf den roten Farbblock achten. Wenn Ihre Anwendung eine geringe CPU-Auslastung aufweist, die Reaktion jedoch langsam ist, müssen Sie auf den blauen Farbblock achten. Je größer der Farbblock oben ist, desto wichtiger muss er berücksichtigt und optimiert werden.