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.
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)
Solution :
Dans ${DOLPHINSCHEUDLER_HOME}/api-server/bin, ajoutez la ligne suivante à jvm_args_env.sh :
-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
Solution :
Assurez-vous que l'utilisateur exécutant le service Arthas correspond à l'utilisateur exécutant DolphinScheduler pour éviter cette erreur.
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[ ...
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
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.
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% ...
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.
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!