Heim >Web-Frontend >js-Tutorial >Verbesserung der Zuverlässigkeit der Aufgabenplanung: Integration von Arthas für die API-Überwachung in DolphinScheduler

Verbesserung der Zuverlässigkeit der Aufgabenplanung: Integration von Arthas für die API-Überwachung in DolphinScheduler

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-05 12:56:021076Durchsuche

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.

Manuelle Installation

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.

Fehlerbehebung

Fehler 1

[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

Fehler 2

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.

Betrachten

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[
...

Verfolgen

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

Entsorgen

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.

JVM-Speicheränderungen anzeigen

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%               
...

CPU-Auslastung anzeigen

Verwenden Sie das Dashboard, um die CPU-Auslastung anzuzeigen und bestimmte Threads zur weiteren Überprüfung mit thread -n thread_id zu identifizieren.

Enhancing Task Scheduling Reliability: Integrating Arthas for API Monitoring in DolphinScheduler

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn