全部产品
Search
文档中心

Application Real-Time Monitoring Service:Diagnosis Arthas

更新时间:Jul 02, 2025

Arthas membantu pengembang mendiagnosis masalah dalam lingkungan produksi aplikasi Java. Teknologi peningkatan bytecode memungkinkan pengembang menyelesaikan masalah tanpa perlu me-restart proses Java Virtual Machine (JVM) yang sedang berjalan.

Application Real-Time Monitoring Service (ARMS) sepenuhnya terintegrasi dengan semua kemampuan Arthas. Dibandingkan dengan pemasangan manual Arthas, integrasi ARMS dengan Arthas memiliki keuntungan sebagai berikut:

  • Kemampuan Arthas tidak bergantung pada lingkungan Java Development Kit (JDK). Anda tidak perlu mengunduh atau menginstal Arthas. Kemampuan ini dapat diaktifkan atau dinonaktifkan kapan saja sesuai kebutuhan bisnis.

  • Fitur utama dapat diakses langsung melalui browser tanpa perlu menentukan perintah atau ekspresi.

  • Kemampuan Arthas terhubung dengan konteks ARMS. Anda dapat menjalankan perintah trace untuk melihat ID jejak dari ARMS.

Prasyarat

Penting
  • Pemantauan Aplikasi menyediakan halaman detail aplikasi baru bagi pengguna yang telah mengaktifkan mode penagihan baru. Untuk informasi lebih lanjut, lihat Penagihan (baru).

    Jika Anda belum mengaktifkan mode penagihan baru, Anda dapat mengklik Switch to New Version pada halaman Daftar Aplikasi untuk melihat halaman detail aplikasi baru.

  • Diagnosis Arthas hanya tersedia untuk aplikasi Java.

  • Disarankan untuk mengaktifkan diagnosis Arthas hanya untuk pemecahan masalah dan menonaktifkannya dalam skenario lain.

  • Versi agen ARMS adalah 2.7.1.3 atau lebih baru.

  • Aplikasi dipantau dalam Pemantauan Aplikasi. Untuk informasi lebih lanjut, lihat Ikhtisar.

  • Aplikasi dikembangkan dalam Java.

Informasi latar belakang

ARMS terintegrasi dengan kemampuan diagnosis waktu nyata Arthas berikut:

  • Ikhtisar JVM: Menampilkan penggunaan memori waktu nyata, informasi sistem, variabel sistem, dan variabel lingkungan dari proses JVM.

  • Analisis thread: Menampilkan konsumsi waktu thread dan tumpukan metode waktu nyata dari thread tertentu dalam proses JVM.

  • Analisis eksekusi metode: Menangkap rekaman eksekusi metode non-JDK yang memenuhi kondisi tertentu, mencatat parameter, pengecualian, nilai yang dikembalikan, dan durasi eksekusi setiap metode internal.

  • Penampil objek: Memungkinkan Anda melihat nilai properti waktu nyata dari instance kelas apa pun.

  • Dasbor waktu nyata: Menampilkan informasi waktu nyata tentang komponen umum, seperti konfigurasi, penggunaan, dan konsumsi waktu kueri SQL dalam kumpulan koneksi Druid.

  • Shell Arthas: Memungkinkan Anda melakukan diagnosis Arthas menggunakan antarmuka baris perintah (CLI).

Catatan

Analisis kinerja Arthas telah ditingkatkan menjadi fitur profil kontinu, yang lebih ramah pengguna dan kuat serta dapat diaktifkan dan digunakan kapan saja.

Fitur profil kontinu secara efektif menemukan hambatan yang disebabkan oleh CPU, memori, atau I/O dalam program Java, menampilkan data statistik berdasarkan nama metode, nama kelas, dan nomor baris. Ini membantu pengembang mengoptimalkan program, mengurangi latensi, meningkatkan throughput, dan menghemat biaya. Untuk informasi lebih lanjut, lihat Gunakan fitur profil kontinu.

Mengaktifkan Arthas

  1. Masuk ke Konsol ARMS. Di bilah navigasi sisi kiri, pilih Application Monitoring > Application List.

  2. Di bilah navigasi atas, pilih Configuration > Custom Configurations.

  3. Di bagian Arthas monitoring, aktifkan Arthas Switch, tentukan apakah diagnosis Arthas hanya dilakukan pada alamat IP tertentu, dan tambahkan alamat IP sesuai kebutuhan bisnis Anda.

  4. Klik Save.

Lihat hasil diagnosis

  1. Masuk ke Konsol ARMS. Di bilah navigasi sisi kiri, pilih Application Monitoring > Application List.

  2. Di bilah navigasi atas, pilih Application Diagnostics > Arthas Diagnostics.

  3. Di halaman Diagnosis Arthas, pilih instance aplikasi tempat Anda ingin melakukan diagnosis dari daftar drop-down di bagian atas.

    • Jika agen ARMS yang diinstal di instance lebih awal dari V2.7.1.3, Anda akan diinstruksikan untuk memperbarui agen.

    • Jika agen ARMS yang diinstal di instance adalah V2.7.1.3 atau lebih baru, halaman tersebut menampilkan informasi instance yang disediakan oleh Arthas.

Ikhtisar JVM

Di tab Ikhtisar JVM, Anda dapat melihat informasi JVM tentang aplikasi, termasuk statistik memori JVM dan informasi tentang sistem operasi dan variabel.

Secara default, saat Anda membuka halaman Diagnosis Arthas, tab JVM overview akan ditampilkan. Tab JVM overview mencakup bagian-bagian berikut:

  • JVM memory: Menampilkan informasi tentang memori JVM, seperti penggunaan memori heap dan non-heap, serta informasi tentang pengumpulan sampah (GC).JVM内存

  • Operating system information: Menampilkan informasi tentang sistem operasi, seperti beban rata-rata sistem, nama dan versi sistem operasi, serta versi Java.操作系统信息

  • Variable information: Menampilkan informasi tentang variabel sistem dan variabel lingkungan.变量信息

Analisis durasi thread

Di tab Analisis konsumsi waktu thread, Anda dapat melihat semua thread aplikasi dan informasi tumpukan setiap thread. Informasi pada tab ini membantu Anda dengan mudah mengidentifikasi thread yang memakan waktu.

  1. Di halaman Diagnosis Arthas, klik tab Thread time-consuming analysis.

    Anda dapat melihat konsumsi waktu thread dalam proses JVM di tab Thread time-consuming analysis. Thread serupa ditampilkan dalam satu baris sebagai kategori.新版Arthas诊断-线程耗时分析

  2. Klik ikon + di sebelah kiri nama kategori thread untuk melihat detail semua thread di bawah kategori ini, termasuk ID thread, penggunaan CPU, dan status.

  3. Klik View the live stack di kolom Actions thread untuk melihat informasi tumpukan tentang thread tersebut.

    堆栈详情

Analisis eksekusi metode

Di tab Analisis eksekusi metode, Anda dapat melihat informasi seperti konsumsi waktu, parameter input, dan nilai yang dikembalikan dari suatu metode, bahkan dapat menelusuri ke metode internal. Anda dapat menggunakan informasi ini untuk menemukan penyebab panggilan lambat dan log yang hilang, atau memecahkan masalah yang tidak dapat direproduksi.

  1. Di halaman Diagnosis Arthas, klik tab Method execution analysis.

  2. Di tab Method execution analysis, masukkan kata kunci nama kelas di kotak pencarian, lalu klik ikon 搜索.

  3. Temukan kelas tempat Anda ingin melakukan diagnosis dari kelas yang ditampilkan. Pilih metode kelas di daftar drop-down di sebelah kanan dan klik OK.

    ARMS menangkap rekaman eksekusi acak dari metode tersebut. Informasi eksekusi ditampilkan.新版Arthas诊断-方法执行分析

    • Rekaman eksekusi internal dari metode yang Anda pilih ditampilkan di bagian Execution Stack di sebelah kiri.

      • Untuk menelusuri ke metode internal, temukan metode internal dan klik Drill in di kolom Actions.

      • Untuk melihat kode sumber metode, klik View Source Code di sebelah Execution Stack.

        Durasi eksekusi setiap metode internal ditampilkan dalam anotasi kode sumber.

    • Bagian Method Execution Result di sebelah kanan menunjukkan nilai parameter, nilai yang dikembalikan, pengecualian, variabel anggota, dan ID jejak metode.

    • Di bagian Set Execution Conditions di sebelah kanan, lakukan langkah-langkah berikut untuk menetapkan kondisi menangkap rekaman eksekusi metode.

      1. Pilih metode muat ulang dari daftar drop-down.

      2. Di daftar drop-down Select Initial Filter Key, pilih jenis kunci yang ingin Anda tentukan pertama kali dan klik ikon 向左箭头.

        Jenis kunci:

        • params[n]: Parameter ke-n dari metode.

        • returnObj: Nilai yang dikembalikan oleh metode.

        • Durasi eksekusi metode: Durasi metode.

        • Apakah ada pengecualian yang dilemparkan: Menentukan apakah pengecualian dilemparkan selama eksekusi metode.

        Catatan

        Jika kunci bersarang dipilih, Anda perlu terus menentukan bidang dari kunci bersarang hingga bidang dasar dipilih.

      3. Pilih kondisi.

      4. Masukkan nilai.

      5. Klik Add.

        Kondisi untuk memilih rekaman eksekusi metode ditampilkan di bagian Current Filtering Conditions.

        设置执行条件

      6. Di sudut kanan atas bagian Execution Stack, klik ikon 刷新. Sistem kemudian menangkap rekaman eksekusi metode berdasarkan kondisi yang ditentukan.

Penampil objek

Di tab objectViewer, Anda dapat melihat informasi beberapa objek singleton untuk memecahkan masalah pengecualian aplikasi, seperti kesalahan konfigurasi, item yang tidak tepat dalam daftar hitam atau putih, dan status abnormal variabel anggota.

  1. Di halaman Diagnosis Arthas, klik tab objectViewer.

  2. Di tab objectViewer, masukkan kata kunci nama kelas di kotak pencarian dan klik ikon Search.

  3. Pilih kelas tempat Anda ingin melakukan diagnosis dari kelas yang ditampilkan, pilih instance kelas di panel sebelah kanan, lalu klik OK.

    Nilai bidang waktu nyata dari instance ditampilkan.Arthas诊断-对象查看器

    • Nilai bidang sederhana ditampilkan di kolom Details pada bagian Real-time Field Values of Object di sebelah kiri.

    • Untuk melihat nilai bidang kompleks, klik View Details di kolom Details bagian Real-time Field Values of Object di sebelah kiri. Nilai bidang detail ditampilkan di bagian Field Details di sebelah kanan.

      Hanya sebagian dari nilai bidang kompleks yang dapat dideserialisasi dan ditampilkan di bagian Field Details. Untuk melihat lebih banyak data, klik hyperlink click di dalam tanda kurung di sebelah Detail.

Dasbor waktu nyata

Di tab Dasbor Waktu Nyata, Anda dapat melihat informasi waktu nyata tentang komponen utama yang digunakan, seperti penggunaan kumpulan koneksi database dan penggunaan kumpulan koneksi HTTP. Informasi ini membantu Anda menemukan masalah sumber daya.

  1. Di halaman Diagnosis Arthas, klik tab Real-time board.

  2. Di tab Real-time board, pilih dasbor dari daftar drop-down, pilih instance dasbor, dan klik Add to board.

    Informasi waktu nyata tentang komponen ditampilkan. Gambar berikut menunjukkan informasi waktu nyata tentang kumpulan koneksi Druid, termasuk konfigurasi dasar, status kumpulan koneksi, dan durasi eksekusi.Arthas诊断-实时看板

Shell Arthas

Catatan

Fitur ini hanya tersedia di wilayah berikut: China (Beijing), China (Shanghai), China (Hangzhou), China (Shenzhen), dan China (Zhangjiakou).

Anda dapat melakukan diagnosis Arthas menggunakan CLI.

Arthas Shell

FAQ

Mengapa Arthas kehilangan sinyal denyut jantung?

Arthas kehilangan sinyal denyut jantung karena alasan berikut:

  • Koneksi jaringan gagal.

    Periksa konektivitas jaringan. Jika baik port publik (9092) maupun port internal (9092) gagal, buka izin akses keluar untuk port 9092 di grup keamanan jaringan, serta titik akhir wilayah masing-masing. Untuk informasi tentang titik akhir, lihat Konfigurasi jaringan yang diperlukan oleh agen ARMS untuk Java. Perhatikan bahwa titik akhir untuk diagnosis aplikasi sama dengan titik akhir untuk pelaporan jejak dan metadata.

  • Agen SkyWalking dipasang di aplikasi.

    ARMS Arthas tidak kompatibel dengan SkyWalking. Anda perlu menghapus agen SkyWalking atau memasang Arthas v3.7.0 atau lebih baru secara manual.

    Jalankan perintah cat ~/logs/arthas/arthas.log. Pesan di akhir log berikut menunjukkan bahwa Arthas tidak kompatibel dengan agen SkyWalking.

    2023-09-11 09:09:47 [arthas-binding-thread] ERROR c.t.a.core.server.ArthasBootstrap -start channel client failure
    java.lang.ExceptionInInitializerError: null
    	at com.alibaba.arthas.channel.proto.ArthasServiceGrpc$ArthasServiceStub.register(ArthasServiceGrpc.java:306)
    	at com.alibaba.arthas.channel.client.ChannelClient.connect(ChannelClient.java:165)
    	at com.alibaba.arthas.channel.client.ChannelClient.start(ChannelClient.java:111)
    	at com.taobao.arthas.core.server.ArthasBootstrap.bind(ArthasBootstrap.java:478)
    	at com.taobao.arthas.core.server.ArthasBootstrap.<init>(ArthasBootstrap.java:162)
    	at com.taobao.arthas.core.server.ArthasBootstrap.getInstance(ArthasBootstrap.java:613)
    	at com.taobao.arthas.core.server.ArthasBootstrap.getInstance(ArthasBootstrap.java:601)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at com.taobao.arthas.agent334.AgentBootstrap.bind(AgentBootstrap.java:182)
    	at com.taobao.arthas.agent334.AgentBootstrap.access$000(AgentBootstrap.java:20)
    	at com.taobao.arthas.agent334.AgentBootstrap$1.run(AgentBootstrap.java:152)
    Caused by: java.lang.reflect.InvocationTargetException: null
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at io.grpc.stub.ClientCalls.<clinit>(ClientCalls.java:52)
    	... 14 common frames omitted
    Caused by: java.lang.reflect.InvocationTargetException: null
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.skywalking.apm.dependencies.net.bytebuddy.dynamic.Nexus.initialize(Nexus.java:139)
    	... 19 common frames omitted
    Caused by: java.lang.NoClassDefFoundError: Lorg/apache/skywalking/apm/agent/core/plugin/interceptor/enhance/StaticMethodsInter;
    	at java.lang.Class.getDeclaredFields0(Native Method)
    	at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
    	at java.lang.Class.getDeclaredField(Class.java:2068)
    	at org.apache.skywalking.apm.dependencies.net.bytebuddy.implementation.LoadedTypeInitializer$ForStaticField.onLoad(LoadedTypeInitializer.java:163)
    	at org.apache.skywalking.apm.dependencies.net.bytebuddy.implementation.LoadedTypeInitializer$Compound.onLoad(LoadedTypeInitializer.java:233)
    	at org.apache.skywalking.apm.dependencies.net.bytebuddy.agent.builder.AgentBuilder$InitializationStrategy$SelfInjection$Dispatcher$InjectingInitializer.onLoad(AgentBuilder.java:3655)
    	... 24 common frames omitted
    Caused by: java.lang.ClassNotFoundException: org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsInter
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    	at com.taobao.arthas.agent.ArthasClassloader.loadClass(ArthasClassloader.java:34)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    	... 30 common frames omitted
    

Mengapa analisis eksekusi metode gagal?

image

Analisis eksekusi metode gagal karena metode yang ditentukan tidak dieksekusi. Klik ikon Refresh untuk menyegarkan tab.

Mengapa ukuran Survivor Space yang ditampilkan dalam diagnosis Arthas hanya setengah dari ukuran sebenarnya?

Diagnosis Arthas hanya menampilkan ukuran From Space, dan tidak menampilkan ukuran To Space.

Apakah diagnosis Arthas memungut biaya?

Tidak, diagnosis Arthas tidak memungut biaya.

Mengapa konsol ARMS menolak permintaan saya untuk memasang Arthas secara manual setelah saya mengaktifkan diagnosis Arthas di konsol?

Secara default, Arthas menggunakan port 3658 untuk menerima koneksi klien baru. Untuk menghindari konflik port ketika beberapa proses pada mesin yang sama memasang Arthas secara bersamaan, ARMS Arthas menggunakan port acak. Ini dapat menyebabkan kegagalan pemasangan. Dalam kasus ini, Anda perlu menonaktifkan diagnosis Arthas di konsol ARMS.

Mengapa log menunjukkan "Arthas server already bind." setelah saya mengaktifkan diagnosis Arthas di konsol?

Jika Arthas open source telah dipasang di aplikasi, ARMS Arthas tidak dapat diaktifkan. Hapus Arthas open source sebelum Anda mengaktifkan ARMS Arthas.