Aracılığıyla paylaş


Yaygın Azure Spring Apps sorunlarını giderme

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 Azure Spring Apps geliştirme sorunlarını gidermeye yönelik yönergeler sağlanır. Daha fazla bilgi için bkz . Azure Spring Apps SSS.

Kullanılabilirlik, performans ve uygulama sorunları

Uygulamam başlatılamıyor

Uygulamanız başlatılamıyorsa, uç noktasının bağlanalamadığını veya birkaç yeniden denemeden sonra 502 döndürdüğünü fark edebilirsiniz.

Sorun giderme için günlükleri Azure Log Analytics'e aktarın. Spring uygulama günlükleri tablosu AppPlatformLogsforSpring olarak adlandırılır. Daha fazla bilgi edinmek için bkz . Tanılama ayarlarıyla günlükleri ve ölçümleri analiz etme.

Günlüklerinizde aşağıdaki hata iletisi görünebilir: org.springframework.context.ApplicationContextException: Unable to start web server

İleti, olası iki sorundan birini gösterir:

  • Fasulyelerden biri veya bağımlılıklarından biri eksik.
  • Çekirdek özelliklerinden biri eksik veya geçersiz. Bu durumda, "java.lang.IllegalArgumentException" görüntülenir.

Hizmet bağlamaları, uygulama başlatma hatalarına da neden olabilir. Günlükleri sorgulamak için ilişkili hizmetlerle ilgili anahtar sözcükleri kullanın. Örneğin, uygulamanızın yerel sistem saati olarak ayarlanmış bir MySQL örneğine bağlaması olduğunu varsayalım. Uygulama başlatılamazsa, günlükte aşağıdaki hata iletisi görüntülenebilir:

"java.sql.SQLException: 'Eşgüdümlü Evrensel Saat' sunucu saat dilimi değeri tanınmaz veya birden fazla saat dilimini temsil eder."

Bu hatayı düzeltmek için MySQL örneğinize gidin server parameters ve system değerini +0:00 olarak değiştirin.time_zone

Uygulamam kilitleniyor veya beklenmeyen bir hata oluşturuyor

Uygulama kilitlenmelerinin hatalarını ayıklarken, uygulamanın çalışma durumunu ve bulma durumunu denetleyerek başlayın. Bunu yapmak için Azure portalında Uygulamalar'a giderek tüm uygulamaların durumlarının Çalışır durumda ve ÇALıŞıR durumda olduğundan emin olun.

  • Durum Çalışıyor ancak bulma durumu UP değilse "Uygulamam kaydedilemiyor" bölümüne gidin.

  • Bulma durumu UP ise, uygulamanın durumunu denetlemek için Ölçümler'e gidin. Aşağıdaki ölçümleri inceleyin:

    • tomcat.global.error:

      Tüm Spring uygulaması özel durumları burada sayılır. Bu sayı büyükse, uygulama günlüklerinizi incelemek için Azure Log Analytics'e gidin.

    • jvm.memory.max:

      Uygulama için kullanılabilir en fazla bellek miktarı. Miktar tanımlanmamış olabilir veya tanımlanmışsa zaman içinde değişebilir. Tanımlanmışsa, kullanılan ve işlenen bellek miktarı her zaman en fazla değerinden küçük veya buna eşit olur. Ancak, kullanılan = maksimum değeri hala doğru olsa <bile, ayırma işlemi işlenen kullanılan belleği >artırmaya çalışırsa, bellek ayırma işlemi bir OutOfMemoryError iletiyle başarısız olabilir. Böyle bir durumda parametresini kullanarak en büyük yığın boyutunu artırmayı -Xmx deneyin.

    • jvm.memory.used:

      Uygulama tarafından kullanılmakta olan bayt cinsinden bellek miktarı. Normal bir yük Java uygulaması için bu ölçüm serisi, bellek kullanımının küçük artışlarla sürekli arttığı ve azaldığı ve aniden çok azaldığı ve ardından desenin yinelendiği bir sawtooth deseni oluşturur. Bu ölçüm serisi, toplama eylemlerinin sawtooth deseninde düşüşleri temsil ettiği Java sanal makinesi içindeki çöp toplama işlemi nedeniyle oluşur.

      Bu ölçüm, aşağıdakiler gibi bellek sorunlarını tanımlamaya yardımcı olmak için önemlidir:

      • En başta bir bellek patlaması.
      • Belirli bir mantıksal yol için aşırı bellek ayırma.
      • Aşamalı bellek sızıntıları.

    Daha fazla bilgi için bkz . Ölçümler.

    Not

    Bu ölçümler yalnızca Spring Boot uygulamalarında kullanılabilir. Bu ölçümleri etkinleştirmek için bağımlılığı ekleyin spring-boot-starter-actuator . Daha fazla bilgi için Spring Boot Aktüatör ile uygulamayı yönetme ve izleme bölümünün Aktüatör bağımlılığı ekleme bölümüne bakın.

  • Uygulama başlatılamazsa, uygulamanın geçerli jvm parametrelerine sahip olduğunu doğrulayın. Jvm belleği çok yüksek ayarlanmışsa, günlüklerinizde aşağıdaki hata iletisi görüntülenebilir:

    "gerekli bellek 2728741K ayırma için 2000M'den büyük"

Azure Log Analytics hakkında daha fazla bilgi edinmek için bkz . Azure İzleyici'de Log Analytics'i kullanmaya başlama.

Uygulamam yüksek CPU kullanımı veya yüksek bellek kullanımıyla karşılaşıyor

Uygulamanız yüksek CPU veya bellek kullanımıyla karşılaşıyorsa iki şeyden biri doğrudur:

  • Tüm uygulama örnekleri yüksek CPU veya bellek kullanımıyla karşılaşır.
  • Uygulama örneklerinden bazıları yüksek CPU veya bellek kullanımıyla karşılaşır.

Hangi durumun geçerli olduğunu belirlemek için aşağıdaki adımları kullanın:

  1. Ölçümler'e gidin ve Hizmet CPU Kullanım Yüzdesi veya Kullanılan Hizmet Belleği'ne tıklayın.
  2. İzlemek istediğiniz uygulamayı belirtmek için bir App= filtresi ekleyin.
  3. Ölçümleri Örneğe göre bölün.

Tüm örneklerde yüksek CPU veya bellek kullanımı yaşanıyorsa, uygulamanın ölçeğini genişletmeniz veya CPU ya da bellek kullanımının ölçeğini artırmanız gerekir. Daha fazla bilgi için bkz . Öğretici: Azure Spring Apps'te uygulama ölçeklendirme.

Bazı örnekler yüksek CPU veya bellek kullanımıyla karşılaşıyorsa örnek durumunu ve bulma durumunu denetleyin.

Daha fazla bilgi için bkz . Azure Spring Apps ölçümleri.

Tüm örnekler çalışır durumdaysa Uygulama günlüklerinizi sorgulamak ve kod mantığınızı gözden geçirmek için Azure Log Analytics'e gidin. Bu gözden geçirme, herhangi birinin ölçek bölümlemini etkileyip etkilemediğini görmenize yardımcı olur. Daha fazla bilgi için bkz . Tanılama ayarlarıyla günlükleri ve ölçümleri analiz etme.

Azure Log Analytics hakkında daha fazla bilgi edinmek için bkz . Azure İzleyici'de Log Analytics'i kullanmaya başlama. Kusto sorgu dilini kullanarak günlükleri sorgular.

Spring uygulamanızı Azure Spring Apps'e dağıtmak için denetim listesi

Uygulamanızı eklemeden önce aşağıdaki ölçütleri karşıladığından emin olun:

  • Uygulama, belirtilen Java çalışma zamanı sürümüyle yerel olarak çalıştırılabilir.
  • Ortam yapılandırması (CPU/RAM/Örnekler), uygulama sağlayıcısı tarafından ayarlanan minimum gereksinimi karşılar.
  • Yapılandırma öğelerinin beklenen değerleri vardır. Daha fazla bilgi için bkz . Hizmetiniz için Spring Cloud Config Server örneği ayarlama. Kurumsal plan için bkz . Uygulama Yapılandırma Hizmeti'ni kullanma.
  • Ortam değişkenlerinin beklenen değerleri vardır.
  • JVM parametrelerinin beklenen değerleri vardır.
  • Ekli Yapılandırma Sunucusu ve Spring Service Kayıt Defteri hizmetlerini uygulama paketinden devre dışı bırakmanızı veya kaldırmanızı öneririz.
  • Hizmet Bağlama aracılığıyla bağlanacak Azure kaynakları varsa, hedef kaynakların çalıştığından emin olun.

Yapılandırma ve Yönetim

Azure Spring Apps hizmet örneği oluştururken bir sorunla karşılaştım

Azure portalını kullanarak bir Azure Spring Apps hizmet örneği ayarladığınızda, Azure Spring Apps doğrulamayı sizin için gerçekleştirir.

Ancak Azure CLI veya Azure Resource Manager şablonunu kullanarak Azure Spring Apps hizmet örneğini ayarlamaya çalışırsanız aşağıdaki koşulları karşıladığınızdan emin olun:

  • Abonelik etkindir.
  • Azure Spring Apps, kullandığınız bölgede kullanılabilir. Daha fazla bilgi için bkz . Azure Spring Apps SSS.
  • Örneğin kaynak grubu zaten oluşturulmuştur.
  • Kaynak adı adlandırma kuralına uygundur. Ad yalnızca küçük harf, sayı ve kısa çizgi içermelidir. İlk karakter harf olmalıdır. Son karakter harf veya sayı olmalıdır. Değerin 2 ile 32 karakter arası olması gerekir.

Resource Manager şablonunu kullanarak Azure Spring Apps hizmet örneğini ayarlamak istiyorsanız, önce Azure Resource Manager şablonlarının yapısını ve söz dizimini anlama bölümüne bakın.

Altında bir alt etki alanı adı istemek için Azure Spring Apps hizmet örneğinin adı azuremicroservices.iokullanılır, bu nedenle ad mevcut bir adla çakılırsa kurulum başarısız olur. Etkinlik günlüklerinde daha fazla ayrıntı bulabilirsiniz.

.NET Core uygulaması dağıtamıyorum

Azure portalını veya Resource Manager şablonunu kullanarak .NET Core Steeltoe uygulaması için .zip dosyasını karşıya yükleyemezsiniz.

Azure CLI kullanarak uygulama paketinizi dağıttığınızda, Azure CLI düzenli aralıklarla dağıtım ilerleme durumunu yoklar ve sonunda dağıtım sonucunu görüntüler.

Uygulamanızın doğru .zip dosya biçiminde paketlendiğinden emin olun. Doğru paketlenmemişse, işlem yanıt vermeyi durdurur veya bir hata iletisi alırsınız.

JAR paketi dağıtamıyorum

Azure portalını veya Resource Manager şablonunu kullanarak Java Arşiv dosyası (JAR)/kaynak paketini karşıya yükleyemezsiniz.

Azure CLI kullanarak uygulama paketinizi dağıttığınızda, Azure CLI düzenli aralıklarla dağıtım ilerleme durumunu yoklar ve sonunda dağıtım sonucunu görüntüler.

Yoklama kesintiye uğrarsa, yine de şu komutu kullanarak dağıtım günlüklerini getirebilirsiniz:

az spring app show-deploy-log --name <app-name>

Uygulamanızın doğru yürütülebilir JAR biçiminde paketlendiğinden emin olun. Doğru paketlenmemişse, aşağıdaki örneğe benzer bir hata iletisi alırsınız: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111.

Kaynak paketi dağıtamıyorum

Azure portalını veya Resource Manager şablonunu kullanarak JAR/kaynak paketini karşıya yükleyemezsiniz.

Azure CLI kullanarak uygulama paketinizi dağıttığınızda, Azure CLI düzenli aralıklarla dağıtım ilerleme durumunu yoklar ve sonunda dağıtım sonucunu görüntüler.

Yoklama kesintiye uğrarsa, yine de şu komutu kullanarak derleme ve dağıtım günlüklerini getirebilirsiniz:

az spring app show-deploy-log --name <app-name>

Ancak, bir Azure Spring Apps hizmet örneği aynı anda tek bir kaynak paket için yalnızca bir derleme işini tetikleyebilir. Daha fazla bilgi için bkz. Azure Spring Apps'te uygulama dağıtma ve hazırlama ortamı ayarlama.

Uygulamam kaydedilemiyor

Çoğu durumda bu durum, Proje Nesne Modeli (POM) dosyanızda Gerekli Bağımlılıklar ve Hizmet Bulma düzgün yapılandırılmadığında oluşur. Yapılandırıldıktan sonra, yerleşik Service Registry sunucu uç noktası uygulamanıza ortam değişkeni olarak eklenir. Uygulamalar daha sonra kendilerini Service Registry sunucusuna kaydeder ve diğer bağımlı uygulamaları bulur.

Yeni kaydedilen bir örneğin trafik almaya başlaması için en az iki dakika bekleyin.

Mevcut Spring Cloud tabanlı bir çözümü Azure'a geçiriyorsanız, Azure Spring Apps tarafından sağlanan yönetilen örneklerle çakışmayı önlemek için geçici Service Registry ve Config Server örneklerinizi kaldırdığınızdan veya devre dışı bırakdığınızdan emin olun.

Azure Log Analytics'te Service Registry istemci günlüklerini de de kontrol edebilirsiniz. Daha fazla bilgi için bkz . Tanılama ayarlarıyla günlükleri ve ölçümleri analiz etme

Azure Log Analytics hakkında daha fazla bilgi edinmek için bkz . Azure İzleyici'de Log Analytics'i kullanmaya başlama. Kusto sorgu dilini kullanarak günlükleri sorgular.

Uygulamamın ortam değişkenlerini incelemek istiyorum

Ortam değişkenleri Azure Spring Apps çerçevesini bilgilendirerek Azure'ın uygulamanızı oluşturan hizmetlerin nerede ve nasıl yapılandırıldığını anlamasını sağlar. Ortam değişkenlerinizin doğru olduğundan emin olmak, olası sorunları gidermenin ilk adımıdır. Ortam değişkenlerinizi gözden geçirmek için Spring Boot Aktüatör uç noktasını kullanabilirsiniz.

Uyarı

Bu yordam, test uç noktanızı kullanarak ortam değişkenlerinizi kullanıma sunar. Test uç noktanız genel erişime açıksa veya uygulamanıza bir etki alanı adı atadıysanız devam etmeyin.

  1. Şuraya git: https://<your-application-test-endpoint>/actuator/health.

    şuna benzer bir {"status":"UP"} yanıt, uç noktanın etkinleştirildiğini gösterir. Yanıt negatifse, POM.xml dosyanıza aşağıdaki bağımlılığı ekleyin:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Spring Boot Aktüatör uç noktası etkinleştirildiğinde Azure portalına gidin ve uygulamanızın yapılandırma sayfasını arayın. adı MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE ve değeriyle *bir ortam değişkeni ekleyin.

  3. Uygulamanızı yeniden başlatın.

  4. adresine https://<your-application-test-endpoint>/actuator/env gidin ve yanıtı inceleyin. Şu şekilde görünmelidir:

    {
        "activeProfiles": [],
        "propertySources": {,
            "name": "server.ports",
            "properties": {
                "local.server.port": {
                    "value": 1025
                }
            }
        }
    }
    

adlı systemEnvironmentalt düğümü arayın. Bu düğüm uygulamanızın ortam değişkenlerini içerir.

Önemli

Uygulamanızı genel kullanıma açık hale getirmeden önce ortam değişkenlerinizin açığa çıkarılma durumunu tersine çevirmeyi unutmayın. Azure portalına gidin, uygulamanızın yapılandırma sayfasını arayın ve şu ortam değişkenini silin: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Uygulamamın ölçümlerini veya günlüklerini bulamıyorum

Uygulama durumlarının Çalışıyor ve UP olduğundan emin olmak için Uygulamalar'a gidin.

JMX'in uygulama paketinizde etkinleştirilip etkinleştirilmediğini denetleyin. Bu özellik yapılandırma özelliğiyle spring.jmx.enabled=trueetkinleştirilebilir.

Uygulama paketinizde bağımlılığın spring-boot-actuator etkinleştirilip etkinleştirilmediğini ve başarıyla önyüklemesinin yapılıp yapılmadığını denetleyin.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Uygulama günlükleriniz bir depolama hesabında arşivlenebiliyor ancak Azure Log Analytics'e gönderilemiyorsa, çalışma alanınızı doğru ayarlayıp ayarlamadığınıza bakın. Daha fazla bilgi için bkz . Log Analytics çalışma alanı oluşturma. Ayrıca, Temel planın hizmet düzeyi sözleşmesi (SLA) sağlamadığını unutmayın. Daha fazla bilgi için bkz . Çevrimiçi Hizmetler için Hizmet Düzeyi Sözleşmeleri (SLA).

Kurumsal plan

Hata 112039: Azure Market satın alınamadı

Azure Spring Apps Enterprise plan örneği oluşturma işlemi "112039" hata koduyla başarısız oluyor. Daha fazla bilgi için aşağıdaki listede ayrıntılı hata iletisine bakın:

  • "Microsoft.SaaS RP Azure aboneliğine kaydedilmediğinden Azure Market satın alınamadı.": Azure Spring Apps Enterprise planı VMware'den bir SaaS teklifi satın aldı.

    Azure Spring Apps Enterprise örneği oluşturmadan önce kaynak sağlayıcısını Microsoft.SaaS kaydetmeniz gerekir. Bir kaynak sağlayıcısının nasıl kaydedildiğini görün.

  • "Azure abonelik pazarında vmware-inc.azure-spring-cloud-vmware-tanzu-2 katalog ürünü yüklenemedi.": Azure aboneliğinizin ödeme hesabı adresi desteklenen konumda değil.

    Daha fazla bilgi için Market '<Konum>' için plan yok bölümüne bakın.

  • "Market yasal sözleşmesinde imza doğrulaması nedeniyle Azure Market satın alınamadı. Azure aboneliğinin vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr" koşullarını kabul ettiğinizi denetleyin: Azure aboneliğiniz teklifin koşullarını imzalamadı ve satın almayı planlıyor.

    Azure aboneliğinize gidin ve koşulları kabul etmek için aşağıdaki Azure CLI komutunu çalıştırın:

    az term accept \
        --publisher vmware-inc \
        --product azure-spring-cloud-vmware-tanzu-2 \
        --plan asa-ent-hr-mtr
    

    Bu işe yaramazsa aşağıdaki bilgilerle destek ekibine başvurabilirsiniz.

    • AZURE_TENANT_ID: Azure aboneliğini barındıran Azure kiracı kimliği
    • AZURE_SUBSCRIPTION_ID: Azure Spring Apps örneğini oluşturmak için kullanılan Azure abonelik kimliği
    • SPRING_CLOUD_NAME: başarısız örnek adı
    • ERROR_MESSAGE: gözlemlenen hata iletisi

Pazar '<Konum>' için plan yok

Azure Market Azure Spring Apps Enterprise SaaS teklifini ziyaret ettiğinizde, aşağıdaki görüntüde gösterildiği gibi "'Konum>' marketi< için plan yok" diyebilirsiniz.

Pazar için plan yok hata iletisini gösteren Azure portalının ekran görüntüsü.

Azure Spring Apps Enterprise planı, müşterilerin bir Azure Market teklifi aracılığıyla Tanzu bileşenlerine lisans için ödeme yapması gerekir. Azure Market satın almak için Azure aboneliğinizin ödeme hesabının ülkesi veya bölgesi SaaS teklifinin desteklenen coğrafi konumlarında olmalıdır.

Azure Spring Apps Enterprise artık Azure Market tarafından desteklenen tüm coğrafi konumları desteklemektedir. Ticari market için Coğrafi kullanılabilirlik ve para birimi desteğinin Desteklenen coğrafi konumlar bölümüne bakın.

Yönetici erişiminiz varsa aboneliğinizin ödeme hesabını görüntüleyebilirsiniz. Bkz . Ödeme hesaplarını görüntüleme.

VMware Spring Runtime Desteğine ihtiyacım var (yalnızca Kurumsal plan)

Enterprise planında yerleşik VMware Spring Runtime Desteği vardır, bu nedenle sorununuzun VMware Spring Runtime Desteği kapsamında olduğunu düşünüyorsanız VMware'e destek biletleri açabilirsiniz. VMware Spring Runtime Desteği'nin kendisini daha iyi anlamak için bkz. VMware Spring Runtime. Bu destek hizmetini kaydetme ve kullanma hakkında daha fazla bilgi için VMware'den Kurumsal SSS bölümündeki Destek bölümüne bakın. Diğer sorunlar için Microsoft ile bir destek bileti açın.

Sonraki adımlar