Bellek sorunlarını giderme araçları
Not
Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.
Bu makale şunlar için geçerlidir: ✔️ Temel/Standart ✔️ Kurumsal
Bu makalede Java bellek sorunlarını gidermek için yararlı olan çeşitli araçlar açıklanmaktadır. Bu araçları bellek sorunlarıyla sınırlı olmayan birçok senaryoda kullanabilirsiniz, ancak bu makale yalnızca bellek konusuna odaklanır.
Uyarılar ve tanılamalar
Aşağıdaki bölümlerde, Azure portalı üzerinden sağlanan kaynak durumu uyarıları ve tanılamaları açıklanmaktadır.
Kaynak durumu
Azure Etkinlik günlüğü ve Azure Hizmet Durumu ile uygulama yaşam döngüsü olaylarını izleyebilir ve uyarılar ayarlayabilirsiniz. Daha fazla bilgi için bkz . Azure Etkinlik günlüğünü ve Azure Hizmet Durumunu kullanarak uygulama yaşam döngüsü olaylarını izleme.
Kaynak durumu, kapsayıcı yetersiz bellek (OOM) sorunları nedeniyle uygulama yeniden başlatma olayları hakkında uyarılar gönderir. Daha fazla bilgi için bkz . Yetersiz bellek sorunlarının neden olduğu uygulama yeniden başlatma sorunları.
Aşağıdaki ekran görüntüsünde OOM sorununu gösteren bir uygulama kaynak durumu uyarısı gösterilmektedir.
Sorunları tanılama ve çözme
Azure Spring Apps tanılaması, yapılandırma olmadan uygulamanızın sorunlarını gidermek için etkileşimli bir deneyimdir. Daha fazla bilgi için bkz . Azure Spring Apps'te sorunları kendi kendine tanılama ve çözme.
Aşağıdaki ekran görüntüsünde gösterildiği gibi Azure portalında Sorunları tanılama ve çözme bölümünde Bellek Kullanımı'nı bulabilirsiniz.
Bellek Kullanımı , aşağıdaki ekran görüntüsünde gösterildiği gibi uygulama bellek kullanımı için basit bir tanılama sağlar.
Ölçümler
Aşağıdaki bölümlerde yüksek bellek kullanımı, çok büyük yığın belleği ve anormal çöp toplama anormal (çok sık veya yeterince sık değil) gibi sorunları kapsayan ölçümler açıklanmaktadır. Daha fazla bilgi için bkz . Hızlı Başlangıç: Azure Spring Apps uygulamalarını günlüklerle, ölçümlerle ve izlemeyle izleme.
Uygulama belleği kullanımı
Uygulama belleği kullanımı, kullanılan uygulama belleğine eşit bir yüzdedir ve uygulama bellek sınırına bölünür. Bu değer tüm uygulama belleğini gösterir.
jvm.memory.used/committed/max
JVM belleği için, aşağıdaki listede açıklanan üç ölçüm vardır: jvm.memory.used
, jvm.memory.committed
ve jvm.memory.max
.
"JVM belleği" açıkça tanımlanmış bir kavram değildir. Burada yığın jvm.memory
belleğinin toplamı ve yığın olmayan belleğin eski permGen bölümü yer alır. JVM belleği doğrudan bellek veya iş parçacığı yığını gibi başka bellek içermez. Spring Boot Aktüatör bu üç ölçümü toplar ve kapsamını jvm.memory
belirler.
jvm.memory.used
, kullanılan öbek belleği ve yığın olmayan bellekte kullanılan eski permGen dahil olmak üzere kullanılan JVM belleği miktarıdır.jvm.memory.used
yığın belleğinin değişiminin önemli bir yansımasıdır, çünkü eski permGen kısmı genellikle kararlıdır.Çok büyük bulursanız
jvm.memory.used
, daha küçük bir en büyük yığın bellek boyutu ayarlamayı göz önünde bulundurun.jvm.memory.committed
JVM'nin kullanması için işlenen bellek miktarıdır. boyutujvm.memory.committed
temel olarak kullanılabilir JVM belleğinin sınırıdır.jvm.memory.max
maksimum JVM bellek miktarıdır, gerçek kullanılabilir miktarla karıştırılmamalıdır.değeri
jvm.memory.max
bazen kullanılabilir uygulama belleğinden çok daha yüksek olabileceğinden kafa karıştırıcı olabilir. Netleştirmek için, gerçek kullanılabilir bellek ne olursa olsun yığınjvm.memory.max
belleğinin en büyük boyutlarının ve öbek olmayan belleğin eski permGen bölümünün toplamıdır. Örneğin, bir uygulama Azure Spring Apps portalında 1 GB bellekle ayarlandıysa varsayılan yığın bellek boyutu 0,5 GB'tır. Daha fazla bilgi için Java bellek yönetiminin Varsayılan en büyük yığın boyutu bölümüne bakın.Varsayılan sıkıştırılmış sınıf alanı boyutu 1 GB ise, uygulama belleği boyutunun
jvm.memory.max
1 GB olup olmadığına bakılmaksızın değeri 1,5 GB'tan büyük olur. Daha fazla bilgi için Bkz. Java Platformu, Standard Sürümü HotSpot Sanal Makine Çöp Toplama Ayarlama Kılavuzu: Oracle belgelerindeki Diğer Önemli Noktalar.
jvm.gc.memory.allocated/promoted
Bu iki ölçüm Java çöp toplamayı (GC) gözlemlemeye yöneliktir. Daha fazla bilgi için Java bellek yönetiminin Java çöp toplama bölümüne bakın. Maksimum yığın boyutu, küçük GC ve tam GC sıklığını etkiler. Maksimum meta alan ve maksimum doğrudan bellek boyutu tam GC'yi etkiler. Atık toplama sıklığını ayarlamak istiyorsanız, aşağıdaki maksimum bellek boyutlarını değiştirmeyi göz önünde bulundurun.
jvm.gc.memory.allocated
, bir GC'nin ardından ve bir sonrakinden önce genç nesil bellek havuzunun boyutundaki artış miktarıdır. Bu değer küçük GC'leri yansıtır.jvm.gc.memory.promoted
, GC'nin ardından eski nesil bellek havuzunun boyutundaki artış miktarıdır. Bu değer tam GC değerini yansıtır.
Bu özelliği aşağıdaki ekran görüntüsünde gösterildiği gibi Azure portalında bulabilirsiniz. Belirli ölçümleri seçebilir ve belirli bir uygulama, dağıtım veya örnek için filtreler ekleyebilirsiniz. Bölme de uygulayabilirsiniz.
Daha fazla hata ayıklama
Daha fazla hata ayıklama için yığın dökümlerini ve iş parçacığı dökümlerini el ile yakalayabilir ve Java Flight Recorder (JFR) kullanabilirsiniz. Daha fazla bilgi için bkz . Yığın dökümünü ve iş parçacığı dökümünü el ile yakalama ve Azure Spring Apps'te Java Flight Recorder kullanma.
Yığın dökümleri Java yığın belleğinin durumunu kaydeder. İş parçacığı dökümleri tüm canlı iş parçacıklarının yığınlarını kaydeder. Bu araçlar, aşağıdaki ekran görüntüsünde gösterildiği gibi Azure CLI aracılığıyla ve Azure portalının uygulama sayfasında kullanılabilir.
Daha fazla bilgi için bkz . Yığın dökümünü ve iş parçacığı dökümünü el ile yakalama ve Azure Spring Apps'te Java Flight Recorder kullanma. Yığın dökümlerini analiz etmek için Bellek Çözümleyicisi gibi üçüncü taraf araçları da kullanabilirsiniz.
Sorunları düzeltmek için yapılandırmaları değiştirme
Tanımlayabileceğiniz bazı sorunlar arasında kapsayıcı OOM, çok büyük yığın belleği ve anormal atık toplama sayılabilir. Bu sorunlardan herhangi birini belirlerseniz, JVM seçeneklerinde en büyük bellek boyutunu yapılandırmanız gerekebilir. Daha fazla bilgi için Java bellek yönetiminin Önemli JVM seçenekleri bölümüne bakın.
Azure portalını veya Azure CLI'yi kullanarak JVM seçeneklerini değiştirebilirsiniz.
Azure portalında uygulamanıza gidin ve gezinti menüsünün Ayarlar bölümünden Yapılandırma'yı seçin. Genel Ayarlar sekmesinde, aşağıdaki ekran görüntüsünde gösterildiği gibi JVM seçenekleri alanını güncelleştirin:
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin