Aracılığıyla paylaş


Bellek sorunlarını giderme araçları

Not

Temel, Standardve Enterprise planları 17 Mart 2025'te kullanımdan kaldırma dönemine girdi. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.

Standart tüketim ve ayrılmış planı 30 Eylül 2024'te emeklilik dönemine girdi ve Mart 2025 sonuna kadar tamamen kapatılacak. Daha fazla bilgi için Azure Spring Apps Standard tüketimini ve ayrılmış planı Azure Container Apps'e geçirme bölümüne bakın.

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 sağlığı

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ı bellek yetersizliği (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.

OOM iletisinin vurgulandığı Azure Spring Apps Kaynak Durumu sayfasını gösteren Azure portalının ekran görüntüsü.

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.

Açılan menüde Bellek Kullanımı'nın vurgulandığı Azure Spring Apps Sorunları tanılama ve çözme sayfasını gösteren Azure portalının ekran görüntüsü.

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.

Azure Spring Apps Bellek Kullanımı sayfasını gösteren Azure portalının ekran görüntüsü.

Ölçümler

Aşağıdaki bölümlerde yüksek bellek kullanımı, çok büyük yığın belleği ve anormal atık toplama (ç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.bellek.kullanılan/adanan/maksimum

JVM belleği için, aşağıdaki listede açıklanan üç ölçüm vardır: jvm.memory.used, jvm.memory.committedve 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ğineski 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 jvm.memory kapsamını 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.

    Eğer jvm.memory.used'yı çok büyük buluyorsanız, 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. boyutu jvm.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. Açık olmak gerekirse, jvm.memory.max yığın belleğin tüm maksimum boyutlarının ve yığın dışı belleğin eski permGen bölümünün toplamıdır, gerçek kullanılabilir bellekten bağımsız olarak. Ö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 Oracle belgelerindeki Java Platformu, Standart Sürümü HotSpot Sanal Makinesi Çöp Toplama Ayarlama Kılavuzu: Diğer Hususlar bölümüne bakın.

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 çaplı GC'yi 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.

Azure Spring Apps Ölçümleri sayfasını gösteren Azure portalının ekran görüntüsü.

Daha fazla hata ayıklama

İleri seviye hata ayıklama için yığın dökümlerini ve iş parçacığı dökümlerini manuel olarak yakalayabilir ve Java Flight Recorder (JFR) kullanabilirsiniz. Daha fazla bilgi için 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'ya bakın.

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.

Sorun giderme düğmesinin vurgulandığı uygulamaya genel bakış sayfasını gösteren Azure portalının ekran görüntüsü.

Daha fazla bilgi için bkz. Yığın dökümünü ve iş parçacığı dökümünü elle yakalama ve Azure Spring Apps'te Java Flight Recorder'ı kullanma. Üçüncü taraf araçlar, Memory Analyzer gibi, yığın dökümlerini analiz etmek için de kullanılabilir.

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:

JVM seçeneklerinin vurgulandığı uygulama yapılandırma sayfasını gösteren Azure portalının ekran görüntüsü.

Ayrıca bkz.