Artikel ini memperincikan integrasi Arthas ke dalam Apache DolphinScheduler untuk membolehkan pemantauan masa nyata panggilan API. Arthas, alat diagnostik Java yang berkuasa, membantu pembangun dalam memeriksa status masa jalan, mengenal pasti kesesakan prestasi dan panggilan kaedah penjejakan. Membenamkan Arthas dalam DolphinScheduler membolehkan penangkapan maklumat panggilan utama semasa penjadualan tugas, membolehkan pengesanan dan penyelesaian isu tepat pada masanya untuk kestabilan sistem yang lebih baik. Di sini, kami menggariskan langkah untuk memulakan Arthas dalam persekitaran DolphinScheduler, memantau panggilan API tertentu dan menganalisis data prestasi yang dikumpul untuk meningkatkan kebolehpercayaan dan kebolehselenggaraan penjadualan.
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)
Penyelesaian:
Dalam ${DOLPHINSCHEUDLER_HOME}/api-server/bin, tambahkan baris berikut pada 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
Penyelesaian:
Pastikan pengguna yang menjalankan perkhidmatan Arthas sepadan dengan pengguna yang menjalankan DolphinScheduler untuk mengelakkan ralat ini.
Jam tangan digunakan untuk memantau butiran pelaksanaan khusus kaedah, seperti parameter dan nilai pulangan.
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 memantau kedalaman panggilan kaedah, termasuk kaedah yang dipanggil dan masa pelaksanaan setiap satu.
[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
Untuk menjana fail longgokan timbunan, gunakan:
[arthas@973263]$ heapdump arthas-output/dump.hprof Dumping heap to arthas-output/dump.hprof ... Heap dump file created
Analisis fail dump dengan alatan seperti MAT untuk diagnostik kebocoran memori.
Gunakan memori untuk memeriksa penggunaan memori JVM:
[arthas@973263]$ memory Memory used total max usage heap 485M 900M 900M 53.91% ps_eden_space 277M 327M 358M 77.61% ...
Gunakan papan pemuka untuk melihat penggunaan CPU dan kenal pasti urutan tertentu untuk pemeriksaan lanjut dengan thread -n thread_id.
Atas ialah kandungan terperinci Meningkatkan Kebolehpercayaan Penjadualan Tugas: Mengintegrasikan Arthas untuk Pemantauan API dalam DolphinScheduler. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!