Tüm Ürünler
Search
Belge Merkezi

Application Real-Time Monitoring Service:Kod odak noktası ile yavaş Java çağrılarını teşhis edin

Son Güncelleme:Oct 05, 2026

ARMS kod odak noktası, istek iş parçacığı yığınlarının anlık görüntülerini yakalamak için sürekli profilleme kullanan bir izleme ve teşhis aracıdır. Bu sayede kodunuzun çalışmasına ilişkin doğru ve gerçek zamanlı bir görünüm elde ederek performans sorunlarını hassas bir şekilde belirlemenize yardımcı olur.

Kullanım senaryoları

  • Satış promosyonları gibi yüksek trafikli etkinlikler sırasında yavaş çağrılar oluştuğunda sorunlu kodu hızla bulun.

  • Sisteminiz yoğun miktarda yavaş çağrı ile karşılaştığında yürütme bağlamını otomatik olarak kaydedin.

  • Tekrarlanması zor olan karmaşık veya aralıklı yavaş çağrılar için tam yöntem düzeyinde yürütme yolunu yeniden oluşturun.

  • Bir izleme, çerçeve dışı yöntemler için enstrümantasyon içermediğinde, kod odak noktası özelliği bu yöntem çağrılarının gerçek yürütme süresini belirlemenize yardımcı olur.

Ön koşullar

  • Kod odak noktası özelliği, 3.1.4 veya sonraki sürüm aracı gerektirir.

  • Kod odak noktası özelliği sürekli profillemeye dayanır; bu özellik işletim sistemi çekirdeği ve JDK sürümü için belirli gereksinimler içerir. Daha fazla bilgi için bkz. Sınırlamalar. Uyumlu bir işletim sistemi ve JDK kullandığınızdan emin olun.

  • 4.2.1'den önceki aracı sürümleri yalnızca eşzamanlı çağrıları destekler. Eşzamansız çağrılarda veri kaybı yaşanabilir. Örneğin, Spring Cloud Gateway, Undertow veya Lettuce kullanıyorsanız eşzamansız iş parçacığı geçişleri veri toplama tutarsızlıklarına neden olabilir. 4.2.1 ve sonraki aracı sürümleri eşzamansız senaryoları destekler.

Kod odak noktasını etkinleştirin

  1. ARMS konsolu adresine gidin. Sol gezinme bölmesinde Application Monitoring > Applications seçeneğini belirleyin.

  2. Applications sayfasında üst kısımdan bir bölge seçin ve uygulamanızın adını tıklayın.

    Not

    Language sütunundaki simgeler şunları 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ı.

    -: Trace Explorer (OpenTelemetry) hizmetine bağlı bir uygulama.

  3. Sol gezinme bölmesinde Application Settings öğesini tıklayın ve ardından Custom Configuration sekmesini seçin.

  4. Continuous profiling bölümünde Main switch anahtarını açın ve ardından Code Hotspot anahtarını etkinleştirin. Bu özelliği etkinleştirmek istediğiniz uygulama örneklerinin IP adreslerini veya örnek grubunun CIDR bloğunu yapılandırın.

  5. Sayfanın alt kısmında Save düğmesini tıklayın.

    Değişiklikler uygulama yeniden başlatması olmadan hemen etkili olur.

Kod odak noktası verilerini analiz edin

Bu örnekte JSON verileri ayrıştırılır ve üzerinde yineleme yapılır, ardından aşağı akıştaki bir HTTP API çağrılır.

public class HotSpotAction extends AbsAction {
  private RestTemplate restTemplate = new RestTemplate();
  // Request entry method.
  @Override
  public void runBusiness() {
    readFile();
    invokeAPI();
  }
  // Make an HTTP call.
  private void invokeAPI() {
    String url = "https://httpbin.org/get";
    String response = restTemplate.getForObject(url, String.class);
  }
   // Read and parse file data.
  private double readFile() {
    InputStreamReader reader = new InputStreamReader(
        ClassLoader.getSystemResourceAsStream("data/xxx.json"));
    LinkedList<Movie> movieList = GSON.fromJson(reader, new TypeToken<LinkedList<Movie>>() {
    }.getType());
    double totalCount = 0;
    for (int i = 0; i < movieList.size(); i++) {
      totalCount += movieList.get(i).rating();
    }
    return totalCount;
  }
}
  1. ARMS konsolu adresine gidin. Sol gezinme bölmesinde Application Monitoring > Applications seçeneğini belirleyin.

  2. Applications sayfasında üst kısımdan bir bölge seçin ve uygulamanızın adını tıklayın.

    Not

    Language sütunundaki simgeler şunları 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. Sol gezinme bölmesinde Interface Invocation öğesini tıklayın. Sayfanın sağ tarafında hedef arabirimi seçin ve ardından trace query sekmesini tıklayın.

  4. trace query sekmesinde hedef TraceId bağlantısını tıklayın.

  5. Details sütununda büyüteç simgesini tıklayın ve ardından Code Hotspot sekmesini seçin.

    Sol panelde bu çağrıya dahil olan tüm yöntemler ve yürütme süreleri listelenir. Sağ panelde ise seçilen yöntem için yığın izlemelerini görselleştiren bir alev grafiği görüntülenir.

    • Self sütunu, bir yöntemin kendi yürütmesi içinde harcadığı süreyi veya kaynakları gösterir; alt yöntemlerin harcadığı süre veya kaynaklar buna dahil değildir. Bu sayede kendi mantığında önemli ölçüde zaman harcayan yöntemleri belirleyebilirsiniz.

    • Total sütunu, bir yöntemin ve tüm alt yöntemlerinin harcadığı toplam süreyi veya kaynakları gösterir. Bu sayede çağrı yığınının genel yürütme süresine en çok katkıda bulunan yöntemleri anlayabilirsiniz.

    Belirli kod odak noktalarını belirlemek için Self sütununa veya alev grafiğinin alt kısmındaki geniş çubuklara odaklanın. Geniş bir çubuk, yüksek gecikme süresinin kök nedenini gösterir ve genellikle java.lang.Thread.sleep() yöntemi gibi bir sistem performans darboğazını temsil eder.

    Verileri aşağıdaki gibi analiz edin:

    1. Self sütununu azalan sıraya göre sıralayın. java.util.LinkedList.node(int) gibi Self değeri en yüksek olan yöntemi tıklayın. Sağ taraftaki alev grafiği ilgili yöntemlere odaklanır.

    2. Odaklanmış görünüm, java.util.LinkedList.node(int) öğesinin alev grafiğindeki yığının en üstündeki en geniş çubuk olduğunu gösterir.

    3. Bu yöntem, uygulamanızın iş mantığı değil, Java Development Kit (JDK) kitaplık işlevlerinden biridir. Kodunuzdaki kaynağı bulmak için çağrı yığınında java.util.LinkedList.node(int) öğesinden yukarı doğru izleyin. Bu yöntem, java.util.LinkedList.get(int) tarafından çağrılır; bu da com.alibaba.cloud.pressure.memory.HotSpotAction.readFile() tarafından çağrılır. com.alibaba.cloud.pressure.memory.HotSpotAction.readFile() yöntemi uygulamanızın bir parçasıdır. Bu örnekte söz konusu yöntem 3,75 saniye tüketmektedir ve bu süre alev grafiğindeki toplam sürenin %69,88'ini oluşturur. Bu durum, com.alibaba.cloud.pressure.memory.HotSpotAction.readFile() öğesinin önemli bir performans darboğazı olduğunu gösterir. Optimizasyon fırsatlarını belirlemek için bu yöntemin mantığını analiz edin.

SSS

  • Kod odak noktasında gösterilen süre neden toplam istek süresinden daha az?

    Uygulamanız üzerindeki performans etkisini en aza indirmek için kod odak noktası özelliği optimize edilmiş bir toplama mekanizması kullanır. Bu durum, kaydedilen sürenin gerçek istek süresinden biraz daha az olmasına neden olabilir. Sapma genellikle 20 ms içinde kalır. Bu küçük farkı göz ardı edin ve nispi süresi en yüksek olan yöntemlere odaklanın.

  • Kod odak noktası için veri toplama aralığında herhangi bir sınırlama var mı?

    • 15 dakikadan uzun süren istekler için kod odak noktası özelliği yalnızca ilk 15 dakikaya ait analiz verilerini sağlar.

    • Sistem ek yükünü azaltmak için ARMS düşük gecikme süreli istekler için kod odak noktası verisi toplamaz. Bunlar genellikle 500 ms altında tamamlanan isteklerdir ancak kesin eşik sistem yüküne göre dinamik olarak belirlenir. Sonuç olarak, sekme bu istekler için herhangi bir veri göstermeyebilir.

İlgili konular

Yüksek CPU ve bellek kullanımı sorunlarını gidermek için sürekli profilleme özelliğini kullanabilirsiniz. Daha fazla bilgi için aşağıdaki konulara bakın:

Sürekli profilleme ile ilgili yaygın sorunlar için bkz. SSS.