Rumah >hujung hadapan web >tutorial js >Meningkatkan Kebolehpercayaan Penjadualan Tugas: Mengintegrasikan Arthas untuk Pemantauan API dalam DolphinScheduler

Meningkatkan Kebolehpercayaan Penjadualan Tugas: Mengintegrasikan Arthas untuk Pemantauan API dalam DolphinScheduler

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-05 12:56:021082semak imbas

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.

Pemasangan Manual

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.

Menyelesaikan Ralat

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

Penyelesaian:
Dalam ${DOLPHINSCHEUDLER_HOME}/api-server/bin, tambahkan baris berikut pada jvm_args_env.sh:

-XX:+StartAttachListener

Ralat 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

Penyelesaian:
Pastikan pengguna yang menjalankan perkhidmatan Arthas sepadan dengan pengguna yang menjalankan DolphinScheduler untuk mengelakkan ralat ini.

Tonton

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

Jejak

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

Buang

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.

Melihat Perubahan Memori JVM

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

Melihat Penggunaan CPU

Gunakan papan pemuka untuk melihat penggunaan CPU dan kenal pasti urutan tertentu untuk pemeriksaan lanjut dengan thread -n thread_id.

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn