Maison >interface Web >js tutoriel >Amélioration de la fiabilité de la planification des tâches : intégration d'Arthas pour la surveillance des API dans DolphinScheduler

Amélioration de la fiabilité de la planification des tâches : intégration d'Arthas pour la surveillance des API dans DolphinScheduler

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-05 12:56:021075parcourir

Cet article détaille l'intégration d'Arthas dans Apache DolphinScheduler pour permettre la surveillance en temps réel des appels d'API. Arthas, un puissant outil de diagnostic Java, aide les développeurs à inspecter l'état d'exécution, à identifier les goulots d'étranglement des performances et à suivre les appels de méthodes. L'intégration d'Arthas dans DolphinScheduler permet la capture d'informations clés sur les appels lors de la planification des tâches, permettant une détection et une résolution rapides des problèmes pour une meilleure stabilité du système. Ici, nous décrivons les étapes pour démarrer Arthas dans l'environnement DolphinScheduler, surveiller les appels d'API spécifiques et analyser les données de performances collectées pour améliorer la fiabilité et la maintenabilité de la planification.

Installation manuelle

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.

Dépannage des erreurs

Erreur 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)

Solution :
Dans ${DOLPHINSCHEUDLER_HOME}/api-server/bin, ajoutez la ligne suivante à jvm_args_env.sh :

-XX:+StartAttachListener

Erreur 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

Solution :
Assurez-vous que l'utilisateur exécutant le service Arthas correspond à l'utilisateur exécutant DolphinScheduler pour éviter cette erreur.

Montre

Watch est utilisé pour surveiller les détails d'exécution spécifiques des méthodes, tels que les paramètres et les valeurs de retour.

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

Tracer

Trace surveille la profondeur des appels de méthodes, y compris les méthodes appelées et le temps d'exécution de chacune.

[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

Décharge

Pour générer un fichier de vidage de tas, utilisez :

[arthas@973263]$ heapdump arthas-output/dump.hprof
Dumping heap to arthas-output/dump.hprof ...
Heap dump file created

Analysez le fichier de vidage avec des outils comme MAT pour les diagnostics de fuite de mémoire.

Affichage des modifications de la mémoire JVM

Utiliser la mémoire pour inspecter l'utilisation de la mémoire JVM :

[arthas@973263]$ memory 
Memory                                                         used                 total                max                  usage                
heap                                                           485M                 900M                 900M                 53.91%               
ps_eden_space                                                  277M                 327M                 358M                 77.61%               
...

Affichage de l'utilisation du processeur

Utilisez le tableau de bord pour afficher l'utilisation du processeur et identifiez des threads spécifiques pour une inspection plus approfondie avec thread -n thread_id.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn