Tüm Ürünler
Search
Belge Merkezi

Application Real-Time Monitoring Service:Arthas ile Teşhis

Son Güncelleme:Oct 05, 2026

Arthas, Java uygulamalarındaki üretim sorunlarını teşhis etmek için güçlü bir araçtır. Bytecode enstrümantasyonu kullanarak JVM sürecini yeniden başlatmadan programın çalışma zamanı durumunu incelemenizi sağlar.

Ön Koşullar

Önemli
  • Application Monitoring (ARMS), yeni faturalama planını etkinleştiren kullanıcılar için yeni bir izleme ayrıntıları sayfası sunar. Daha fazla bilgi için bkz. Product Billing (New).

    Yeni faturalama planını etkinleştirmediyseniz ve yeni izleme ayrıntıları sayfasını görüntülemek istiyorsanız Application List sayfasında Switch to New Version seçeneğine tıklayın.

  • Bu özellik şu anda yalnızca Java uygulamalarını destekler.

  • Arthas teşhis özelliğini yalnızca sorun giderme amacıyla etkinleştirmenizi ve rutin kullanımda devre dışı bırakmanızı öneririz.

  • ARMS aracı sürümü v2.7.1.3 veya üzeri olmalıdır.

  • Uygulamanız Application Monitoring hizmetine bağlı olmalıdır. Daha fazla bilgi için bkz. Application Monitoring overview.

  • Uygulama Java dilinde yazılmış olmalıdır.

Genel Bilgiler

ARMS tarafından sunulan Arthas teşhis özelliği, temel olarak ARMS gerçek zamanlı teşhis yeteneklerini tamamlamak için kullanılır. ARMS Arthas teşhis özelliği aşağıdaki türleri içerir:

  • JVM genel bakışı: Geçerli JVM süreci için gerçek zamanlı bellek kullanımını, sistem bilgilerini, sistem değişkenlerini ve ortam değişkenlerini görüntüleyin.

  • İş parçacığı süre analizi: Geçerli JVM sürecindeki iş parçacıklarının tükettiği CPU süresini ve belirli bir iş parçacığının gerçek zamanlı yöntem yığınını görüntüleyin.

  • Yöntem yürütme analizi: Belirtilen koşulları karşılayan herhangi bir JDK dışı yöntemin tek bir yürütme kaydını yakalayın. Bu kayıt; yöntemin parametrelerini, özel durumlarını, dönüş değerlerini ve dahili yöntemlerin yürütme süresini içerir.

  • Nesne görüntüleyici: Herhangi bir sınıf örneğinin gerçek zamanlı alan değerlerini görüntüleyin.

  • Gerçek zamanlı pano: Yaygın bileşenler için gerçek zamanlı panoları görüntüleyin. Örneğin, bir Druid bağlantı havuzu için gerçek zamanlı pano; yapılandırmasını, kullanımını ve SQL yürütme sürelerini gösterir.

  • Performans analizi: CPU süresi ve bellek tahsisi gibi verileri belirli bir süre boyunca örnekleyerek karşılık gelen alev grafiklerini oluşturun.

  • Arthas Kabuğu: Arthas teşhisini komut satırından yapın.

Arthas sürüm bilgileri

ARMS aracı sürümleri v2.7.1.3 ile 4.6.x arasında olduğunda, karşılık gelen Arthas sürümü 3.5.6'dır. ARMS aracı sürümleri 4,7.x ve üzeri olduğunda, karşılık gelen Arthas sürümü 4.1.0'dır.

Arthas Teşhisini Etkinleştirme

  1. ARMS konsolu oturumunu açın. Sol gezinme bölmesinde Application Monitoring > Application List seçeneklerini belirleyin.

  2. Application List sayfasında, sayfanın üst kısmından bir bölge seçin ve ardından hedef uygulamanın adına tıklayın.

    Not

    Language sütunundaki simgeler aşağıdakileri ifade eder:

    Java图标: Application Monitoring hizmetine bağlı bir Java uygulaması.

    image: Application Monitoring hizmetine bağlı bir Go uygulaması.

    image: Application Monitoring hizmetine bağlı bir Python uygulaması.

    -: Managed Service for OpenTelemetry hizmetine bağlı bir uygulama.

  3. Üst gezinme çubuğunda Application Configuration > Custom Configurations seçeneklerini belirleyin.

  4. Arthas Monitoring bölümünde, Arthas anahtarını açın. Ayrıca, bu adresleri yapılandırmaya ekleyerek yalnızca belirli IP adreslerinde teşhis çalıştırabilirsiniz.

  5. Save seçeneğine tıklayın.

Arthas Teşhisini Görüntüleme

  1. ARMS konsolu oturumunu açın. Sol gezinme bölmesinde Application Monitoring > Application List seçeneklerini belirleyin.

  2. Application List sayfasında, sayfanın üst kısmından bir bölge seçin ve ardından hedef uygulamanın adına tıklayın.

    Not

    Language sütunundaki simgeler aşağıdakileri ifade eder:

    Java图标: Application Monitoring hizmetine bağlı bir Java uygulaması.

    image: Application Monitoring hizmetine bağlı bir Go uygulaması.

    image: Application Monitoring hizmetine bağlı bir Python uygulaması.

    -: Managed Service for OpenTelemetry hizmetine bağlı bir uygulama.

  3. Üst gezinme çubuğunda Application Diagnostics > Arthas Diagnostics seçeneklerini belirleyin.

  4. Arthas Diagnostics sayfasının üst kısmındaki açılır listeden teşhis edilecek bir örnek seçin.

    • Örneğin ARMS aracısı v2.7.1.3 veya sonraki bir sürüme yükseltilmemişse, sayfa önce aracıyı yükseltmenizi ister.

    • Örneğin ARMS aracısı v2.7.1.3 veya sonraki bir sürüme yükseltilmişse, sayfa örnek için Arthas teşhis bilgilerini görüntüler.

JVM Genel Bakışı

JVM genel bakışı özelliği, uygulamanızın JVM durumuna ilişkin yüksek seviyede bir görünüm sağlar. Bu görünüm; bellek, işletim sistemi bilgileri ve değişkenleri içerir.

Arthas teşhis sayfası varsayılan olarak JVM Overview sekmesini gösterir. JVM Overview sekmesinde aşağıdaki bilgileri görüntüleyebilirsiniz:

  • JVM Memory: Yığın kullanımı, yığın dışı kullanım ve GC durumu dahil olmak üzere JVM belleğiyle ilgili bilgiler. Tablo, heap, buffer_pool ve nonheap alanları için Used, Total ve Max bellek değerlerinin yanı sıra her GC türü için Total Count ve Total Time değerlerini gösterir.

  • Operating System Information: Ortalama yük, işletim sistemi adı, işletim sistemi sürümü ve Java sürümü dahil olmak üzere işletim sistemiyle ilgili bilgiler. Alanlar şunlardır: systemLoadAverage, osVersion, javaVersion, processors, osName, javaHome, timestamp ve uptime.

  • Variable information: Sistem ve ortam değişkenleri dahil olmak üzere değişkenlerle ilgili bilgiler. Sayfa, sol tarafta bir System variables paneli ve sağ tarafta bir Environment variables paneli olarak bölünmüştür. Her panelde anahtar kelimeye göre filtreleme yapmak için bir arama kutusu bulunur. Değişkenler anahtar-değer çiftleri olarak görüntülenir.

İş Parçacığı Süre Analizi

İş parçacığı süre analizi, uygulamanın tüm iş parçacıklarını gösterir ve iş parçacığı yığını bilgilerini görüntülemenize olanak tanır. Bu sayede yüksek CPU kullanan iş parçacıklarını hızla tanımlayabilirsiniz.

  1. Arthas Diagnostics sayfasında Threading Time Analysis sekmesine tıklayın.

    Threading Time Analysis sekmesi, geçerli JVM sürecindeki iş parçacıklarının gerçek zamanlı CPU kullanımını getirir ve benzer iş parçacıklarını gruplar. Sayfanın üst kısmında her durumdaki (NEW, TERMINATED, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING) iş parçacığı sayısı gösterilir. Aşağıdaki tablo, iş parçacıklarını Name, Total CPU ve Count alanlarına göre gruplar. Her iş parçacığının ID'sini, CPU kullanımını, State durumunu ve View real-time stack eylemini görüntülemek için bir grubu genişletebilirsiniz.

  2. Bir iş parçacığı grubunun ayrıntılarını genişletmek için sol tarafındaki + simgesine tıklayın. Her iş parçacığının ID'sini, CPU kullanımını ve durumunu görüntüleyebilirsiniz.

  3. Bir iş parçacığının yığınını görüntülemek için, ilgili iş parçacığının Actions sütunundaki View Live Stack seçeneğine tıklayın.

    Thread Details iletişim kutusu açılır ve iş parçacığı adı, durumu (örneğin RUNNABLE) ile tam Java yığını gösterilir.

Yöntem Yürütme Analizi

Yöntem yürütme analizi, belirli bir yöntem yürütmesinin süresini, giriş parametrelerini ve dönüş değerlerini yakalamanıza ve bunları detaylandırmanıza olanak tanır. Bu sayede yavaş çağrıların kök nedenini hızlıca bulabilirsiniz. Sorunların çevrimdışı olarak çoğaltılamadığı veya günlüklerin eksik olduğu senaryolar için kullanışlıdır.

  1. Arthas Diagnostics sayfasında Method Execution Analysis sekmesine tıklayın.

  2. Method Execution Analysis sekmesinde, arama kutusuna sınıf adı için bir anahtar kelime girin ve 搜索 simgesine tıklayın.

  3. Arama sonuçlarından teşhis etmek istediğiniz sınıfı seçin, sağ taraftaki açılır listeden bir yöntem seçin ve OK seçeneğine tıklayın.

    Sayfa, seçilen yöntemin ARMS ve tarafından rastgele yakalanan bir yürütmesinden elde edilen bilgileri görüntüler.

    • Sol taraftaki Execution Stack bölümü, teşhis edilen yöntemin dahili yürütme kaydını gösterir.

      • Dahili bir yöntemi detaylandırmak için Actions sütunundaki Drill-down seçeneğine tıklayın.

      • Yöntemin kaynak kodunu görüntülemek için Execution Stack bölümünün üst kısmındaki View Source Code seçeneğine tıklayın.

        Her dahili yöntemin yürütme süresi, kaynak kodda yorum olarak görüntülenir.

    • Sağ taraftaki Method Execution Result bölümü, bu yöntem yürütmesinin parametre değerlerini, dönüş değerini, özel durumlarını, üye değişkenlerini ve TraceID bilgisini gösterir.

    • Sağ taraftaki Set Execution Conditions bölümünde, yöntem yürütme kayıtlarını yakalamak için koşulları ayarlamak üzere şu adımları izleyin:

      1. Geçerli yöntemin aşırı yüklenmiş bir sürümünü seçin.

      2. Please select initial filter key açılır listesinden bir anahtar türü seçin ve 向左箭头 simgesine tıklayın.

        Başlangıç filtreleme anahtarı türleri:

        • params[n]: Yöntemin n. parametresi.

        • returnObj: Yöntemin dönüş değeri.

        • Method execution duration: Yöntemin yürütme süresi.

        • Whether an exception is thrown: Yöntemin özel durum oluşturup oluşturmadığına dayalı bir koşul.

        Not

        Seçilen başlangıç filtreleme anahtarı iç içe geçmiş bir türse, ilkel bir türe ulaşana kadar iç alanlarını seçmeye devam etmeniz gerekir.

      3. Bir karşılaştırma operatörü seçin.

      4. Bir filtre değeri girin.

      5. Add seçeneğine tıklayın.

        Eklenen filtre koşulu Current Filter Condition bölümünde görünür.

        Örneğin, doGetDatas(ArmsCtx, String) aşırı yüklenmiş yöntemini seçin, geçerli filtreleme anahtarını params[0].userId olarak ayarlayın, = operatörünü seçin, 123 değerini girin ve Add seçeneğine tıklayın. Current Filtering Conditions bölümü, params.length = 2 ve params[0].userId = 123 gibi yapılandırılmış koşulları gösterir.

      6. Execution Stack bölümünün sağ üst köşesindeki 刷新 simgesine tıklayın. Sistem, ayarlanan koşullara göre yöntem yürütmesini yeniden yakalar.

Nesne Görüntüleyici

Tekil nesnelerin durumunu incelemek ve uygulama yapılandırması, izin listeleri, engelleme listeleri ve üye değişkenleriyle ilgili sorunları gidermek için nesne görüntüleyiciyi kullanın.

  1. Arthas Diagnostics sayfasında Object Viewer sekmesine tıklayın.

  2. Object Viewer sekmesinde, arama kutusuna sınıf adı için bir anahtar kelime girin ve Search simgesine tıklayın.

  3. Arama sonuçlarından teşhis edilecek sınıfı seçin. Ardından, sağ taraftaki örnek listesinden bir örnek seçin ve OK seçeneğine tıklayın.

    Sayfa, bu örnekteki alanların gerçek zamanlı değerlerini görüntüler. Sayfa; sol tarafta Type, Field Name ve Details sütunlarına sahip bir tablo içeren Real-time Field Values of Object paneli ve sağ tarafta seçili alan için ayrıntılı JSON verilerini gösteren Field Details paneli olarak bölünmüştür.

    • Basit tür alanları için Object field real-time value panelindeki Details sütunu alanın değerini gösterir.

    • Karmaşık tür alanları için, Object field real-time value panelindeki Details sütununda View Details seçeneğine tıklayarak alanın değer ayrıntılarını sağ taraftaki Field Details panelinde görebilirsiniz.

      Field Details paneli, karmaşık alanlar için yalnızca tek düzeyde serileştirme kaldırma işlemini destekler. Daha spesifik verileri görüntülemek için Click seçeneğine tıklayın.

Gerçek Zamanlı Pano

Veritabanı bağlantı havuzları ve HTTP bağlantı havuzları gibi sisteminizdeki temel bileşenlerin gerçek zamanlı durumunu görüntülemek için gerçek zamanlı panoyu kullanın. Bu sayede kaynakla ilgili sorunları giderebilirsiniz.

  1. Arthas Diagnostics sayfasında Live Kanban sekmesine tıklayın.

  2. Live Kanban sekmesinde, açılır listeden bir pano seçin, sağ taraftaki örnek seçim kutusundan bir örnek seçin ve Add to dashboard seçeneğine tıklayın.

    Sayfa, pano için gerçek zamanlı verileri gösterir. Örneğin, bir Druid bağlantı havuzu için durum bilgileri temel yapılandırma, havuz durumu ve yürütme süresi dağılımını içerir. Temel yapılandırma DbType ve URL bilgilerini içerir. Havuz durumu ActiveCount, PoolingCount ve MaxActive gibi ölçümleri içerir. Alt kısımdaki çubuk grafikler connection holding time distribution ve transaction execution duration distribution bilgilerini gösterir.

Performans Analizi

Performans analizi, CPU süresi ve bellek tahsisi gibi verileri belirli bir süre boyunca örnekler ve alev grafikleri oluşturur. Bu sayede uygulama performans darboğazlarını hızlıca tanımlayabilirsiniz.

  1. Arthas Diagnostics sayfasında Performance Analytics sekmesine tıklayın.

  2. Performance Analytics sekmesinin altında Create flame map seçeneğine tıklayın.

  3. Create flame map iletişim kutusunda bir alev grafiği türü seçin, örnekleme süresini ve açıklamaları girin, ardından Confirm seçeneğine tıklayın.

    Parameter

    Description

    Example

    Flame graph type

    Örneklenecek nesne türü. Geçerli değerler:

    • CPU time

    • Memory allocation

    • Lock time

    • itimer

    CPU time

    Sampling duration (in seconds)

    Örnekleme süresi. Geçerli değerler: 10 ile 1800.

    30

    Oluşturulan alev grafiğinin görev bilgileri Performance Analytics sekmesinin altında görüntülenir. Bu bilgiler; başlangıç zamanı, örnekleme süresi, açıklamalar, alev grafiği türü ve görev durumu içerir. Görev tamamlandığında, Task Status sütununda View flame graph bağlantısı görüntülenir. Oluşturulan alev grafiğini görüntülemek için bağlantıya tıklayabilirsiniz.

  4. Performance Analytics sekmesinin altında görev kaydını bulun. Task Status sütununda View flame chart seçeneğine tıklayın. Ekran talimatlarını izleyerek alev grafiği dosyasını SVG formatında indirin ve ardından dosyayı bir tarayıcıda açın.

    火焰图

Arthas Kabuğu

Özel Arthas teşhislerini komut satırından yapın.

Arthas Shell sayfasının üst kısmında bir Route seçebilir ve Connect veya Disconnect düğmesini kullanabilirsiniz. Başarılı bir bağlantıdan sonra yeşil renkli Connected durum uyarısı görüntülenir. Aşağıdaki siyah terminal arayüzü, [arthas@9]$ gibi bir Arthas komut istemi gösterir. Teşhis işlemlerini yapmak için terminale Arthas komutları girebilirsiniz.

SSS

Arthas etkinleştirildikten sonra istem veya heartbeat gelmiyor

Bu sorun aşağıdaki iki nedenden kaynaklanabilir:

  • Ağ bağlantısı sorunu.

    Ağ bağlantısını kontrol edin. Hem genel hem de özel uygulama teşhis bağlantı noktalarına (9092) yapılan bağlantılar başarısız olursa, ilgili bölgedeki teşhis ve erişim uç noktası alan adları için güvenlik grubunu 9092 numaralı bağlantı noktasında giden erişime izin verecek şekilde yapılandırmanız gerekir. Gerekli alan adları hakkında bilgi için bkz. Network configurations for Java application monitoring. Uygulama teşhis alan adı, iz meta veri alan adı ile aynıdır.

  • Uygulamada SkyWalking aracısı takılı.

    ARMS ile entegre edilen Arthas aracısı, SkyWalking aracısı ile uyumsuzdur. SkyWalking aracısını kaldırmanız veya Arthas'in daha yeni bir sürümünü (3.7.0 veya üzeri) manuel olarak takmanız gerekir.

    cat ~/logs/arthas/arthas.log komutunu çalıştırın. Günlüğün sonunda aracı uyumsuzluğunu belirten bir özel durum görüntülenir.

    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
    

Yöntem yürütme analizinde komut hatası

Method execution analysis sayfasındaki Execution Stack bölümündeki yükleme animasyonu, sistemin yöntemin çağrılmasını beklediğini gösterir.

Yöntem yürütme analizi, o anda seçili yöntemin yürütülmesini gerçek zamanlı olarak yakalar. Bekleme süresi boyunca yöntem yürütülmezse işlem zaman aşımına uğrar ve bu hata oluşur. Yeniden denemek için Refresh simgesine tıklayabilirsiniz.

Hatalı survivor alanı boyutu

Survivor alanı, "from" alanı ve "to" alanı olmak üzere iki eşit parçaya bölünür. Arthas yalnızca "from" alanının boyutunu görüntüler.

Arthas teşhisinin faturalandırılması

Hayır. Bu özellik için ek ücret alınmaz.

Arthas'i manuel olarak takarken Connection refused hatası

Arthas varsayılan olarak yeni istemci bağlantılarını kabul etmek için 3658 numaralı bağlantı noktasını kullanır. Aynı ana bilgisayardaki birden çok süreç Arthas'i taktığında bağlantı noktası çakışmalarını önlemek için ARMS ile entegre Arthas rastgele bir bağlantı noktası kullanır. Bu durum takma işleminin başarısız olmasına neden olabilir. Bu sorun oluşursa, Arthas'i manuel olarak takmadan önce ARMS konsolunda Arthas özelliğini devre dışı bırakmanız gerekir.

"Arthas server already bind" hatası

Uygulamaya daha önce açık kaynaklı bir Arthas örneği takıldıysa, ARMS ile entegre Arthas etkinleştirilemez. Önce açık kaynaklı Arthas'i kaldırmalı, ardından ARMS ile entegre Arthas'i etkinleştirmelisiniz.