Heim >Web-Frontend >js-Tutorial >Verbesserung der Zuverlässigkeit der Aufgabenplanung: Integration von Arthas für die API-Überwachung in DolphinScheduler
Dieser Artikel beschreibt die Integration von Arthas in Apache DolphinScheduler, um eine Echtzeitüberwachung von API-Aufrufen zu ermöglichen. Arthas, ein leistungsstarkes Java-Diagnosetool, unterstützt Entwickler bei der Überprüfung des Laufzeitstatus, der Identifizierung von Leistungsengpässen und der Verfolgung von Methodenaufrufen. Die Einbettung von Arthas in DolphinScheduler ermöglicht die Erfassung wichtiger Anrufinformationen während der Aufgabenplanung und ermöglicht so eine rechtzeitige Problemerkennung und -lösung für eine verbesserte Systemstabilität. Hier beschreiben wir die Schritte zum Starten von Arthas in der DolphinScheduler-Umgebung, zum Überwachen spezifischer API-Aufrufe und zum Analysieren der gesammelten Leistungsdaten, um die Planungszuverlässigkeit und Wartbarkeit zu verbessern.
https://arthas.aliyun.com/download/latest_version?mirror=aliyun arthas-packaging-3.7.2-bin.zip cp arthas-packaging-3.7.2-bin.zip /opt/arthas cd /opt/arthas unzip arthas-packaging-3.7.2-bin.zip java -jar arthas-boot.jar Select the corresponding process ID.
[ERROR] Start arthas failed, exception stack trace: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106) at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:78) at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:250) at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:102) at com.taobao.arthas.core.Arthas.<init>(Arthas.java:27) at com.taobao.arthas.core.Arthas.main(Arthas.java:161)
Lösung:
Fügen Sie in ${DOLPHINSCHEUDLER_HOME}/api-server/bin die folgende Zeile zu jvm_args_env.sh hinzu:
-XX:+StartAttachListener
Picked up JAVA_TOOL_OPTIONS: java.io.IOException: well-known file /tmp/.java_pid731688 is not secure: file should be owned by the current user (which is 0) but is owned by 989 at sun.tools.attach.LinuxVirtualMachine.checkPermissions(Native Method) at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:117) at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:78) at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:250) at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:102) at com.taobao.arthas.core.Arthas.<init>(Arthas.java:27) at com.taobao.arthas.core.Arthas.main(Arthas.java:161) [ERROR] Start arthas failed, exception stack trace: [ERROR] attach fail, targetPid: 731688
Lösung:
Stellen Sie sicher, dass der Benutzer, der den Arthas-Dienst ausführt, mit dem Benutzer übereinstimmt, der DolphinScheduler ausführt, um diesen Fehler zu vermeiden.
Watch wird verwendet, um die spezifischen Ausführungsdetails von Methoden zu überwachen, wie z. B. Parameter und Rückgabewerte.
watch org.apache.dolphinscheduler.api.controller.UsersController queryUserList returnObj
[arthas@731688]$ watch org.apache.dolphinscheduler.api.controller.UsersController queryUserList returnObj Press Q or Ctrl+C to abort. Affect(class count: 1 , method count: 1) cost in 126 ms, listenerId: 2 method=org.apache.dolphinscheduler.api.controller.UsersController.queryUserList location=AtExit ts=2024-08-27 02:04:01; [cost=4.918943ms] result=@Result[ ...
Trace überwacht die Tiefe von Methodenaufrufen, einschließlich der aufgerufenen Methoden und der jeweiligen Ausführungszeit.
[arthas@973263]$ trace org.apache.dolphinscheduler.api.controller.UsersController queryUserList Press Q or Ctrl+C to abort. Affect(class count: 1 , method count: 1) cost in 319 ms, listenerId: 1 `---ts=2024-08-27 10:33:08;thread_name=qtp1836984213-26;id=26;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@439f5b3d `---[13.962731ms] org.apache.dolphinscheduler.api.controller.UsersController:queryUserList() +---[0.18% 0.025123ms ] org.apache.dolphinscheduler.api.controller.UsersController:checkPageParams() #130 +---[0.09% 0.012549ms ] org.apache.dolphinscheduler.plugin.task.api.utils.ParameterUtils:handleEscapes() #131 `---[96.47% 13.469876ms ] org.apache.dolphinscheduler.api.service.UsersService:queryUserList() #132
Um eine Heap-Dump-Datei zu generieren, verwenden Sie:
[arthas@973263]$ heapdump arthas-output/dump.hprof Dumping heap to arthas-output/dump.hprof ... Heap dump file created
Analysieren Sie die Dump-Datei mit Tools wie MAT zur Speicherleckdiagnose.
Verwenden Sie den Speicher, um die JVM-Speichernutzung zu überprüfen:
[arthas@973263]$ memory Memory used total max usage heap 485M 900M 900M 53.91% ps_eden_space 277M 327M 358M 77.61% ...
Verwenden Sie das Dashboard, um die CPU-Auslastung anzuzeigen und bestimmte Threads zur weiteren Überprüfung mit thread -n thread_id zu identifizieren.
Das obige ist der detaillierte Inhalt vonVerbesserung der Zuverlässigkeit der Aufgabenplanung: Integration von Arthas für die API-Überwachung in DolphinScheduler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!