Java için Azure İzleyici Application Insights Profil Oluşturucu
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ı ayarlama konusunda bkz . Profil İçeriğini Yapılandırma.
Ö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.
CPU
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 yüzdesi, bölgenin mümkün olan en büyük boyutuna karşı geçerli Kiracılı bellek bölgesi (OldGen) doluluk oranıdır.
Kiracılı bir koleksiyon gerçekleştirildikten sonra doluluk değerlendirilir. Kiracılı bölgenin en büyük boyutu, Java Sanal Makinesi (JVM) yığınının en büyük boyutuna kadar büyümesi durumunda bu boyutun boyutudur.
Ö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'ını büyütebilir.
- En büyük olası kiracı 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 süresi 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.
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:
Application Insights örneğinin Performance ->Profiler bölümüne göz atın.
Tetikleyiciler'i seçin
Gerekli CPU, Bellek veya İstek tetikleyicilerini (etkinse) yapılandırın ve Uygula'yı seçin.
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, Performans ->Profiler bölümündeki Application Insights örneğinden gö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).
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>Profili Oluşturucu>Tetikleyicileri altında 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, ve dosyasının memoryTriggeredSettings
cpuTriggeredSettings
yolunu gerekli yapılandırmanızla birlikte sağlamak için .jfc
öğesini değiştirin.
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
.profile.jfc
JFR ile birlikte gelen 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
.profile.jfc
JFR ile birlikte gelen 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 profil oluşturmanın 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
.
Sık sorulan sorular
Azure İzleyici Application Insights Java Profili Oluşturma nedir?
Java Profiler, özelleştirilmiş bir yapılandırma kullanarak uygulamanızın profilini oluşturmak için Java Flight Recorder (JFR) kullanır.
Java Flight Recorder nedir?
Java Flight Recorder (JFR), çalışan bir Java uygulamasının profil oluşturma verilerini toplamaya yönelik bir araçtır. JFR, Java Sanal Makinesi (JVM) ile tümleşiktir ve performans sorunlarını gidermek için kullanılır. Java SE JFR Runtime hakkında daha fazla bilgi edinin.
App Insights Java Profil oluşturma özelliğini etkinleştirmenin fiyat ve/veya lisans ücreti üzerindeki etkileri ne olur?
Java Profil Oluşturma, Application Insights ile ücretsiz bir özelliktir. Azure İzleyici Application Insights fiyatlandırması , alım maliyetini temel alır.
Hangi Java profil oluşturma bilgileri toplanır?
JFR tarafından toplanan profil oluşturma verileri şunları içerir: yöntem ve yürütme profil oluşturma verileri, çöp toplama verileri ve kilit profilleri.
App Insights Java Profil oluşturma özelliğini nasıl kullanabilirim ve verileri nasıl görselleştirebilirim?
JFR kaydı tercih ettiğiniz araçla görüntülenebilir ve analiz edilebilir, örneğin Java Mission Control (JMC).
App Insights Java Profil Oluşturma ile performans tanılama ve düzeltme önerileri sağlanıyor mu?
'Performans tanılama ve öneriler', Application Insights Java Tanılaması olarak yakında kullanıma sunulan yeni bir özelliktir. Bu özelliği önizlemek için kaydolabilirsiniz. JFR kaydı Java Mission Control (JMC) ile görüntülenebilir.
App Insights'ta isteğe bağlı ve otomatik Java Profili Oluşturma arasındaki fark nedir?
İsteğe bağlı olarak, kullanıcı tarafından gerçek zamanlı olarak tetiklenen profil oluşturma, otomatik profil oluşturma ise önceden yapılandırılmış tetikleyicilerle birlikte gerçekleştirilir.
İsteğe bağlı profil oluşturma seçeneği için Şimdi ProfilLe seçeneğini kullanın. Profil Şimdi , Application Insights örneğine eklenmiş olan tüm aracıların profilini hemen oluşturur.
Otomatik profil oluşturma, bir kaynak eşiğine ulaşılarak tetikleniyor.
Hangi Java profil oluşturma tetikleyicilerini yapılandırabilirim?
Application Insights Java Aracısı şu anda CPU ve bellek tüketimini izlemeyi desteklemektedir. CPU eşiği, makinedeki tüm kullanılabilir çekirdeklerin yüzdesi olarak yapılandırılır. Bellek, bölgenin mümkün olan en büyük boyutuna karşı geçerli Tenured bellek bölgesi (OldGen) doluluğudur.
Java Profil oluşturmayı etkinleştirmek için gerekli önkoşullar nelerdir?
Bu makalenin en üstündeki Önkoşullar'a göz atın.
Mikro hizmetler uygulaması için Java Profil oluşturma kullanabilir miyim?
Evet, JFR kullanarak mikro hizmetler çalıştıran bir JVM'nin profilini oluşturabilirsiniz.