Aracılığıyla paylaş


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.

Screenshot of Azure portal showing Azure Spring Apps Resource Health page with OOM message highlighted.

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.

Screenshot of Azure portal showing Azure Spring Apps Diagnose and solve problems page with Memory Usage highlighted in drop-down menu.

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.

Screenshot of Azure portal showing Azure Spring Apps Memory Usage page.

Ö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.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ğ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.memorybelirler.

  • 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. 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. Netleştirmek için, gerçek kullanılabilir bellek ne olursa olsun yığın jvm.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.

Screenshot of Azure portal showing Azure Spring Apps Metrics page.

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.

Screenshot of Azure portal showing app overview page with Troubleshooting button highlighted.

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:

Screenshot of Azure portal showing app configuration page with JVM options highlighted.

Ayrıca bkz.