Java için Azure Monitor Application Insights Profiller

Not

Java Profiler özelliği 3.4.0 sürümünden itibaren önizleme aşamasındadır.

Java Profiler aşağıdakiler için bir sistem sağlar:

  • Java Sanal Makinesi'nden (JVM) isteğe bağlı olarak JDK Flight Recorder (JFR) profilleri oluşturma.
  • JVM'den belirli tetikleyici koşulları karşılandığında (CPU veya bellek yapılandırılmış eşiği ihlal etme gibi) JFR profillerini otomatik olarak oluşturma.

Genel bakış

Java Profiler, profil oluşturma verilerini kaydetmek için JVM tarafından sağlanan JFR profil oluşturucuyu kullanarak kullanıcıların JFR kayıtlarını daha sonra indirmesine ve performans sorunlarının nedenini belirlemek üzere analiz etmelerine olanak sağlar.

Bu veriler, tetikleyici koşulları karşılandığında isteğe bağlı olarak toplanır. Kullanılabilir tetikleyiciler CPU kullanımı, Bellek tüketimi ve İstek (hizmet düzeyi sözleşme tetikleyicileri) üzerindeki eşiklerdir. İstek tetikleyicileri OpenTelemetry tarafından oluşturulan Spans'ı izler ve kullanıcının bu Span'lar süresince hizmet düzeyi sözleşmesi (SLA) gereksinimlerini yapılandırmasına olanak tanır.

Bir eşiğe ulaşıldığında, yapılandırılan tür ve sürenin profili toplanır ve karşıya yüklenir. Bu profil daha sonra ilişkili Application Insights Portalı kullanıcı arabiriminin performans bölmesinde görünür.

Uyarı

JFR profil oluşturucu varsayılan olarak "profile-without-env-data" profilini yürütür. JFR dosyası, JVM tarafından yayılan bir dizi olaydır. "Profile-without-env-data" yapılandırması, JVM ile birlikte gelen "profil" yapılandırmasına benzer, ancak ortam değişkenleri, JVM'ye sağlanan bağımsız değişkenler ve sistemde çalışan işlemler gibi hassas dağıtım bilgilerini içerme olasılığı olan bazı olaylar devre dışı bırakılmıştır.

Artık kullanılabilir olmayan bayraklar şunlardır:

  • jdk. JVMInformation
  • jdk. InitialSystemProperty
  • jdk.OSInformation
  • jdk.InitialEnvironmentVariable
  • jdk. SystemProcess

Ancak, profillerin hassas veriler içermediğinden emin olmak için tüm etkin bayrakları gözden geçirmeniz gerekir.

Özel profil oluşturucu yapılandırmasını ayarlama hakkında bilgi için Profil İçeriklerini Yapılandırma bölümüne bakın.

Önkoşullar

  • Java Flight Recorder (JFR) özelliğine sahip JVM

    • Java 8 güncelleştirme 262+
    • Java 11+

Uyarı

OpenJ9 JVM desteklenmiyor

Kullanım

Tetikleyiciler

Kullanılabilir çeşitli tetikleyicilerin daha ayrıntılı açıklaması için bkz . .NET için Application Insights Profiler ile Azure'da üretim uygulamalarının profilini oluşturma.

ApplicationInsights Java Aracısı, bir iş işlemi gibi CPU, bellek ve istek süresini izler. Yapılandırılmış bir eşiği ihlal ederse bir profil tetiklenir.

Şimdi profil oluşturma

Şimdi profil oluştur düğmesi profil oluşturucu kullanıcı arabiriminde bulunur (bkz. .NET için Application Insights Profiler'ı yapılandırma). Bu düğme seçildiğinde, Application Insights örneğine bağlı tüm aracılarda hemen bir profil istenir. Varsayılan profil oluşturma süresi iki dakikadır. Geçersiz kılarak periodicRecordingDurationSeconds değiştirebilirsiniz (bkz . Yapılandırma dosyası).

Uyarı

Profili çağırmak artık profil oluşturucu özelliğini etkinleştirir ve Application Insights varsayılan CPU ve bellek SLA tetikleyicilerini uygular. Uygulamanız bu SLA'ları ihlal ettiğinde Application Insights Java profillerini toplar. Profil oluşturmayı daha sonra devre dışı bırakmak isterseniz, bunu Yükleme'de gösterilen tetikleyici menüsünden yapabilirsiniz.

İşlemci

CPU eşiği, sistemdeki tüm kullanılabilir çekirdeklerin kullanım yüzdesidir.

Örneğin, sekiz çekirdekli bir makinenin bir çekirdeği doygunluğa sahipse CPU yüzdesi %12,5 olarak kabul edilir.

Bellek

Bellek kullanım yüzdesi, bölgenin mümkün olan en büyük boyutuna karşı Tenure bellek bölgesi (OldGen) mevcut doluluk oranını temsil eder.

Kiracılı bir koleksiyon gerçekleştirildikten sonra doluluk değerlendirilir. Kiracılı bölgenin maksimum boyutu, Java Sanal Makinesi (JVM) yığını maksimum boyutuna ulaştığında sahip olacağı boyuttur.

Örneğin, aşağıdaki senaryoyu inceleyin:

  • Java yığını en fazla 1.024 MB'a kadar büyüyebilir.
  • Tenured Generation, yığının %90'ına kadar büyüyebilir.
  • Maksimum olası tenured belleği boyutu 922 MB olacaktır.
  • Eşiğiniz kullanıcı arabirimi aracılığıyla %75 olarak ayarlandı, bu nedenle eşiğiniz 922 mb,691 MB'ın %75'i olur.

Bu senaryoda, aşağıdaki durumlarda bir profil oluşur:

  • Tam çöp toplama işlemi yürütülür
  • Tenured bölgelerin doluluk oranı, koleksiyondan sonra 691 mb'ın üzerindedir.

İstek

SLA tetikleyicileri OpenTelemetry'yi temel alır ve belirli ölçütler karşılanırsa bir profil başlatır.

Her bir tetikleyici yapılandırması aşağıdaki gibi oluşturulur:

  • Name - Tetikleyici için benzersiz bir tanımlayıcı.
  • Filter - Tetikleyici için ilgi çekici istekleri filtreler.
  • Aggregation - Belirli bir eşiği ihlal eden isteklerin oranını hesaplar.
    • Threshold - İstek ihlalinin oluştuğu belirlenen en düşük değer (milisaniye cinsinden).
    • Minimum samples - Toplamanın veri üretmesi için toplanması gereken en az örnek sayısıdır, bu ayar küçük örnek boyutlarının tetiklenmesini önlemektir.
    • Window - Sıralı zaman penceresi (milisaniye cinsinden).
  • Threshold - Toplama çıkışına uygulanan eşik değeri (yüzde). Bu değer aşılırsa bir profil başlatılır.

Örneğin, aşağıdaki senaryo belirli bir uç noktaya (/users/.*) yönelik isteklerin %75'inden fazlası, en az 100 örnek toplandığında 60 saniyelik bir pencere içinde 30 ms'den uzun sürerse bir profili tetikler.

İstek tetikleyicisi örneğinin ekran görüntüsü

Yükleme

Aşağıdaki adımlar, aracıda profil oluşturma bileşenini etkinleştirme ve ihlal edilmesi durumunda bir profili tetikleyen kaynak sınırlarını yapılandırma konusunda size yol gösterir.

Bir profilin toplanmasına neden olan kaynak eşiklerini yapılandırın:

  1. Application Insights örneğinin Performance ->Profiler bölümüne göz atın.

    Performans bölmesindeki Profil Oluşturucu düğmesinin ekran görüntüsü.

Uyarı

Sağ alttaki Profiler izlemeleri düğmesi Java için desteklenmez.

  1. Tetikleyiciler'i seçin

  2. Gerekli CPU, Bellek veya İstek tetikleyicilerini (etkinse) yapılandırın ve Uygula'yı seçin.

    Tetikleyici ayarlarının ekran görüntüsü.

Uyarı

Java Profil Oluşturucu "Örnekleme" tetikleyicisini desteklemez. Bunu yapılandırmanın hiçbir etkisi olmayacaktır.

Bu adımlar tamamlandıktan sonra aracı işleminizin kaynak kullanımını izler ve eşik aşıldığında bir profil tetikler. Bir profil tetiklenip tamamlandığında, Performansgörüntülenebilir. Bu ekrandan profil indirilebilir, JFR kayıt dosyası indirildikten sonra seçtiğiniz bir araçta açılabilir ve analiz edilebilir, örneğin Oracle JDK Mission Control (JMC).

Profil oluşturucu sayfası özelliklerinin ve ayarlarının ekran görüntüsü.

Yapılandırma

Eşikler ve profil oluşturma dönemleri gibi Java Profil Oluşturucu tetikleyici ayarlarının yapılandırması, Application Insights kullanıcı arabiriminde Performans>Yükleme bölümünde açıklandığı gibi ayarlanır.

Ayrıca, ortam değişkenleri ve applicationinsights.json yapılandırma dosyası kullanılarak birçok parametre yapılandırılabilir.

Profil İçeriğini Yapılandırma

Özel profil yapılandırması sağlamak istiyorsanız, memoryTriggeredSettings ve cpuTriggeredSettings öğelerini değiştirerek gerekli yapılandırmanızla birlikte bir .jfc dosyasının yolunu sağlayın.

Profiller, menü altındaki Window->Flight Recording Template Manager JDK Mission Control (JMC) kullanıcı arabiriminde oluşturulabilir/düzenlenebilir ve bu kullanıcı arabiriminin içinde Edit->Advanced tek tek bayraklar üzerinde denetim bulunur.

Ortam değişkenleri

  • APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED: boolean (varsayılan: true)

    Profil oluşturma özelliğini etkinleştirir/devre dışı bırakır. Varsayılan olarak özellik aracı içinde etkinleştirilir (aracı 3.4.9'dan itibaren). Ancak, bu özellik aracı içinde etkinleştirilmiş olsa da, Yükleme bölümünde açıklandığı gibi portalda etkinleştirilmediği sürece profiller toplanmaz.

Yapılandırma dosyası

Örnek yapılandırma:

{
  "preview": {
    "profiler": {
      "enabled": true,
      "cpuTriggeredSettings": "profile-without-env-data",
      "memoryTriggeredSettings": "profile-without-env-data",
      "manualTriggeredSettings": "profile-without-env-data",
      "enableRequestTriggering": true,
      "periodicRecordingDurationSeconds": 60
    }
  }
}

memoryTriggeredSettings Bu yapılandırma, bir bellek profili istenirse kullanılır. Bu değer aşağıdakilerden biri olabilir:

  • profile-without-env-data (varsayılan değer). Belirli hassas olayları devre dışı bırakmış bir profil, ayrıntılar için Uyarı bölümüne bakın.
  • profile. JFR ile birlikte gelen yapılandırmayı profile.jfc kullanır.
  • Dosya sistemindeki özel bir jfc yapılandırma dosyasının yolu, örneğin, /tmp/myconfig.jfc.

cpuTriggeredSettings Bu yapılandırma, bir CPU profili istenirse kullanılır. Bu değer aşağıdakilerden biri olabilir:

  • profile-without-env-data (varsayılan değer). Belirli hassas olayları devre dışı bırakmış bir profil, ayrıntılar için Uyarı bölümüne bakın.
  • profile. JFR ile birlikte temin edilen profile.jfc jfc yapılandırmasını kullanır.
  • Dosya sistemindeki özel bir jfc yapılandırma dosyasının yolu, örneğin, /tmp/myconfig.jfc.

manualTriggeredSettings El ile profil istenirse bu yapılandırma kullanılır. Bu değer aşağıdakilerden biri olabilir:

  • profile-without-env-data (varsayılan değer). Belirli hassas olayları devre dışı bırakmış bir profil, ayrıntılar için Uyarı bölümüne bakın.
  • profile. JFR ile birlikte temin edilen profile.jfc jfc yapılandırmasını kullanır.
  • Dosya sistemindeki özel bir jfc yapılandırma dosyasının yolu, örneğin, /tmp/myconfig.jfc.

enableRequestTriggering JFR profillemenin istek yapılandırmasına göre tetiklenip tetiklenmeyeceği. Bu değer aşağıdakilerden biri olabilir:

  • true İstek tetikleyici eşiği ihlal edilirse profil oluşturma tetikleniyor.
  • false (varsayılan değer). İstek yapılandırması profil oluşturmayı tetiklemez.

periodicRecordingDurationSecondsŞimdi profil oluştur düğmesi kullanılarak profil oluşturma oturumu başlatıldığında saniye cinsinden profil oluşturma kaydı süresi. Varsayılan değer şudur: 120.

Sonraki Adımlar