Bagikan melalui


Memecahkan masalah umum terkait Azure Spring Apps

Catatan

Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara saat kami berupaya memperbarui aset seperti cuplikan layar, video, dan diagram.

Artikel ini berlaku untuk: ✔️ Basic/Standard ✔️ Enterprise

Artikel ini memberikan instruksi untuk memecahkan masalah pengembangan Azure Spring Apps. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Azure Spring Apps.

Masalah ketersediaan, kinerja, dan aplikasi

Aplikasi saya tidak dapat dimulai

Ketika aplikasi Anda tidak dapat dimulai, Anda mungkin menemukan bahwa titik akhirnya tidak dapat dihubungkan atau mengembalikan 502 setelah beberapa percobaan ulang.

Untuk pemecahan masalah, ekspor log ke Azure Log Analytics. Tabel untuk log aplikasi Spring diberi nama AppPlatformLogsforSpring. Untuk mempelajari lebih lanjut, lihat Menganalisis log dan metrik dengan pengaturan diagnostik.

Pesan kesalahan berikut mungkin muncul di log Anda: org.springframework.context.ApplicationContextException: Unable to start web server

Pesan menunjukkan salah satu dari dua kemungkinan masalah:

  • Salah satu bean atau salah satu dependensinya hilang.
  • Salah satu properti bean hilang atau tidak valid. Dalam hal ini, "java.lang.IllegalArgumentException" ditampilkan.

Pengikatan layanan juga dapat menyebabkan kegagalan mulai aplikasi. Untuk mengkueri log, gunakan kata kunci yang terkait dengan layanan terikat. Misalnya, mari kita asumsikan bahwa aplikasi Anda memiliki pengikatan ke instans MySQL yang diatur ke waktu sistem lokal. Jika aplikasi gagal dimulai, pesan kesalahan berikut mungkin muncul di log:

"java.sql.SQLException: Nilai zona waktu server 'Waktu Universal Terkoordinasi' tidak dikenali atau mewakili lebih dari satu zona waktu."

Untuk memperbaiki kesalahan ini, buka server parameters instans MySQL Anda, dan ubah time_zone nilai dari SYSTEM menjadi +0:00.

Aplikasi saya crash atau memberikan pesan kesalahan tidak terduga

Saat Aplikasi debugging lumpuh, mulailah dengan memeriksa status berjalan dan status penemuan aplikasi. Untuk melakukannya, buka Aplikasi di portal Azure untuk memastikan bahwa status semua aplikasi Berjalan dan AKTIF.

  • Jika status berjalan tetapi status penemuan tidak UP, buka bagian "Aplikasi saya tidak dapat didaftarkan".

  • Jika status penemuan UP, buka Metrik untuk memeriksa kesehatan aplikasi. Periksa metrik berikut:

    • tomcat.global.error:

      Semua pengecualian aplikasi Spring dihitung di sini. Jika angka ini lebih besar dari yang diharapkan, silakan buka Azure Log Analytics untuk memeriksa log aplikasi Anda.

    • jvm.memory.max:

      Jumlah maksimum memori yang tersedia untuk aplikasi. Jumlahnya mungkin tidak terdefinisi, atau mungkin berubah dari waktu ke waktu jika ditentukan. Jika ditentukan, jumlah memori yang digunakan dan berkomitmen selalu kurang dari atau sama dengan maks. Namun, alokasi memori mungkin gagal dengan pesan OutOfMemoryError jika alokasi mencoba menambah memori yang digunakan sedemikian rupa sehingga menggunakan > ditetapkan, bahkan jika menggunakan <= maks masih benar. Dalam situasi seperti itu, cobalah untuk meningkatkan ukuran heap maksimum dengan menggunakan -Xmx parameter.

    • jvm.memory.used:

      Jumlah memori dalam byte yang saat ini digunakan oleh aplikasi. Untuk aplikasi Java beban normal, seri metrik ini membentuk pola sawtooth di mana penggunaan memori terus meningkat dan berkurang dalam kenaikan kecil dan tiba-tiba turun banyak, dan kemudian pola terulang. Seri metrik ini terjadi karena pengumpulan sampah di dalam komputer virtual Java, di mana tindakan pengumpulan mewakili peletakan pada pola sawtooth.

      Metrik ini penting untuk membantu mengidentifikasi masalah memori, seperti:

      • Sebuah ledakan memori di awal.
      • Alokasi memori lonjakan untuk jalur logika tertentu.
      • Kebocoran memori bertahap.

    Untuk informasi selengkapnya, lihat Metrik.

    Catatan

    Metrik ini hanya tersedia untuk aplikasi Spring Boot. Untuk mengaktifkan metrik ini, tambahkan spring-boot-starter-actuator dependensi. Untuk informasi selengkapnya, lihat bagian Tambahkan dependensi aktuator dari Kelola dan pantau aplikasi dengan Spring Boot Actuator.

  • Jika aplikasi gagal memulai, verifikasi bahwa aplikasi memiliki parameter jvm yang valid. Jika memori jvm diatur terlalu tinggi, pesan kesalahan berikut mungkin muncul di log Anda:

    "memori yang diperlukan 2728741K lebih besar dari 2000M tersedia untuk alokasi"

Untuk mempelajari selengkapnya tentang Azure Log Analytics, lihat Mulai menggunakan Analitik Log di Azure Monitor.

Aplikasi saya mengalami penggunaan CPU tinggi atau penggunaan memori tinggi

Jika aplikasi Anda mengalami penggunaan CPU atau memori yang tinggi, maka salah satu dari dua hal tersebut adalah benar:

  • Semua instans aplikasi mengalami penggunaan CPU atau memori yang tinggi.
  • Beberapa instans aplikasi mengalami penggunaan CPU/memori yang tinggi.

Untuk memastikan situasi mana yang berlaku, gunakan langkah-langkah berikut:

  1. Buka Metrik, lalu pilih Persentase Penggunaan Layanan CPU atau Penggunaan Layanan Memori.
  2. Tambahkan filter App= untuk menentukan aplikasi mana yang ingin Anda pantau.
  3. Pisahkan metrik menurut Instans.

Jika semua instans mengalami penggunaan CPU atau memori yang tinggi, Anda harus meluaskan skala aplikasi atau meningkatkan skala penggunaan CPU atau memori. Untuk informasi selengkapnya, lihat Tutorial: Menskalakan aplikasi di Azure Spring Apps.

Jika beberapa instans mengalami penggunaan CPU atau memori yang tinggi, periksa status instans dan status penemuannya.

Untuk informasi selengkapnya, lihat Metrik untuk Azure Spring Apps.

Jika semua instans aktif dan berjalan, maka buka Azure Log Analytics untuk meminta log aplikasi dan tinjau logika kode Anda. Tinjauan ini membantu Anda melihat apakah salah satu dari mereka dapat memengaruhi partisi skala. Untuk informasi selengkapnya, lihat Menganalisis log dan metrik dengan pengaturan diagnostik.

Untuk mempelajari selengkapnya tentang Azure Log Analytics, lihat Mulai menggunakan Analitik Log di Azure Monitor. Kueri log dengan menggunakan Bahasa kueri Kusto.

Daftar periksa untuk menyebarkan aplikasi Spring Anda ke Azure Spring Apps

Sebelum Anda melakukan menyetorkan aplikasi, pastikan aplikasi tersebut memenuhi kriteria berikut:

  • Aplikasi dapat berjalan secara lokal dengan versi runtime Java yang ditentukan.
  • Konfigurasi lingkungan (CPU/RAM/Instans) memenuhi persyaratan minimum yang ditetapkan oleh penyedia aplikasi.
  • Item konfigurasi memiliki nilai yang diharapkan. Untuk informasi selengkapnya, lihat Menyiapkan instans Spring Cloud Config Server untuk layanan Anda. Untuk paket Enterprise, lihat Menggunakan Layanan Konfigurasi Aplikasi.
  • Variabel lingkungan memiliki nilai yang diharapkan.
  • Parameter JVM memiliki nilai yang diharapkan.
  • Kami menyarankan agar Anda menonaktifkan atau menghapus layanan Config Server dan Spring Service Registry yang disematkan dari paket aplikasi.
  • Jika ada sumber daya Azure yang akan terikat melalui Pengikatan Layanan, pastikan sumber daya target aktif dan berjalan.

Konfigurasi dan manajemen

Saya mengalami masalah saat membuat instans layanan Azure Spring Apps

Saat Anda menyiapkan instans layanan Azure Spring Apps menggunakan portal Azure, Azure Spring Apps melakukan validasi untuk Anda.

Tetapi jika Anda mencoba menyiapkan instans layanan Azure Spring Apps dengan menggunakan Azure CLI atau templat Azure Resource Manager, verifikasi bahwa Anda memenuhi kondisi berikut:

  • Langganan aktif.
  • Azure Spring Apps tersedia di wilayah yang Anda gunakan. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Azure Spring Apps.
  • Grup sumber daya untuk instans sudah dibuat.
  • Nama sumber daya sesuai dengan aturan penamaan. Nama hanya boleh berisi huruf kecil, angka, dan tanda hubung. Karakter pertama harus berupa huruf. Karakter terakhir harus berupa huruf atau angka. Nilainya harus terdiri dari 2 hingga 32 karakter.

Jika Anda ingin menyiapkan instans layanan Azure Spring Apps dengan menggunakan template Resource Manager, pertama-tama lihat Memahami struktur dan sintaks template Azure Resource Manager.

Nama instans layanan Azure Spring Apps digunakan untuk meminta nama subdomain di bawah azuremicroservices.io, sehingga penyiapan gagal jika nama bertentangan dengan yang sudah ada. Anda mungkin menemukan detail selengkapnya dalam log aktivitas.

Saya tidak dapat menyebarkan aplikasi .NET Core

Anda tidak dapat mengunggah file .zip untuk aplikasi .NET Core Steeltoe dengan menggunakan portal Azure atau templat Resource Manager.

Saat Anda menggunakan paket aplikasi dengan menggunakan Azure CLI, Azure CLI secara berkala melakukan polling pendapat tentang kemajuan penyebaran dan, pada akhirnya, paket tersebut menampilkan hasil penyebaran.

Pastikan aplikasi Anda dikemas dalam format file .zip yang benar. Jika tidak dipaketkan dengan benar, proses berhenti merespons atau Anda menerima pesan kesalahan.

Saya tidak dapat menyebarkan paket JAR

Anda tidak dapat mengunggah file Java Archive (JAR)/paket sumber dengan menggunakan portal Azure atau templat Resource Manager.

Saat Anda menggunakan paket aplikasi dengan menggunakan Azure CLI, Azure CLI secara berkala melakukan polling pendapat tentang kemajuan penyebaran dan, pada akhirnya, paket tersebut menampilkan hasil penyebaran.

Jika polling terganggu, Anda masih dapat menggunakan perintah berikut untuk mengambil log penyebaran:

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

Pastikan bahwa aplikasi Anda dikemas dalam format JAR yang dapat dieksekusi dengan benar. Jika tidak dipaketkan dengan benar, Anda menerima pesan kesalahan yang mirip dengan contoh berikut: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111.

Saya tidak dapat menyebarkan paket sumber

Anda tidak dapat mengunggah paket JAR/sumber dengan menggunakan portal Azure atau templat Resource Manager.

Saat Anda menggunakan paket aplikasi dengan menggunakan Azure CLI, Azure CLI secara berkala melakukan polling pendapat tentang kemajuan penyebaran dan, pada akhirnya, paket tersebut menampilkan hasil penyebaran.

Jika poling terganggu, Anda masih dapat menggunakan perintah berikut untuk mengambil log build dan penyebaran:

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

Namun, satu instans layanan Azure Spring Apps hanya dapat memicu satu pekerjaan build untuk satu paket sumber pada satu waktu. Untuk informasi selengkapnya, lihat Menyebarkan aplikasi dan Menyiapkan pentahapan lingkungan di Azure Spring Apps.

Aplikasi saya tidak dapat didaftarkan

Dalam kebanyakan kasus, situasi ini terjadi ketika Dependensi yang Diperlukan dan Penemuan Layanan tidak dikonfigurasi dengan benar dalam file Model Objek Proyek (POM) Anda. Setelah dikonfigurasi, endpoint server Service Registry bawaan dimasukkan sebagai variabel lingkungan dengan aplikasi Anda. Aplikasi kemudian mendaftarkan diri ke server Service Registry dan menemukan aplikasi dependen lain.

Tunggu setidaknya dua menit sebelum instans yang baru terdaftar mulai menerima lalu lintas.

Jika Anda memigrasikan solusi berbasis Spring Cloud yang ada ke Azure, pastikan untuk menghapus atau menonaktifkan instans Registri Layanan ad-hoc dan Server Konfigurasi Anda untuk menghindari konflik dengan instans terkelola yang disediakan oleh Azure Spring Apps.

Anda juga dapat memeriksa log klien Service Registry di Azure Log Analytics. Untuk informasi selengkapnya, lihat Menganalisis log dan metrik dengan pengaturan diagnostik

Untuk mempelajari selengkapnya tentang Azure Log Analytics, lihat Mulai menggunakan Analitik Log di Azure Monitor. Kueri log dengan menggunakan Bahasa kueri Kusto.

Saya ingin memeriksa variabel lingkungan aplikasi saya

Variabel lingkungan menginformasikan kerangka kerja Azure Spring Apps, memastikan bahwa Azure memahami di mana dan bagaimana mengonfigurasi layanan yang membentuk aplikasi Anda. Memastikan bahwa variabel lingkungan Anda benar adalah langkah pertama yang diperlukan dalam memecahkan masalah potensial. Anda dapat menggunakan titik akhir Spring Boot Actuator untuk meninjau variabel lingkungan Anda.

Peringatan

Prosedur ini memaparkan variabel lingkungan Anda dengan menggunakan titik akhir pengujian Anda. Jangan lanjutkan jika titik akhir pengujian Anda dapat diakses secara publik atau jika Anda telah menetapkan nama domain ke aplikasi Anda.

  1. Buka https://<your-application-test-endpoint>/actuator/health.

    Respons yang mirip dengan {"status":"UP"} menunjukkan bahwa titik akhir telah diaktifkan. Jika respons negatif, sertakan dependensi berikut dalam file POM.xml Anda:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Dengan titik akhir Spring Boot Actuator diaktifkan, buka portal Azure dan cari halaman konfigurasi aplikasi Anda. Tambahkan variabel lingkungan dengan nama MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE dan nilai * .

  3. Mulai ulang aplikasi Anda.

  4. Buka https://<your-application-test-endpoint>/actuator/env dan periksa responsnya. Harusnya akan terlihat seperti ini:

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

Carilah node anak bernama systemEnvironment. Node ini berisi variabel lingkungan aplikasi Anda.

Penting

Ingatlah untuk membalikkan paparan variabel lingkungan Anda sebelum membuat aplikasi Anda dapat diakses oleh publik. Buka portal Azure, cari halaman konfigurasi aplikasi Anda, dan hapus variabel lingkungan ini: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Saya tidak dapat menemukan metrik atau log untuk aplikasi saya

Buka Aplikasi untuk memastikan bahwa status aplikasi berjalan dan UP.

Periksa untuk melihat apakah JMX diaktifkan dalam paket aplikasi Anda. Fitur ini dapat diaktifkan dengan properti spring.jmx.enabled=true konfigurasi.

Periksa untuk melihat spring-boot-actuator apakah dependensi diaktifkan dalam paket aplikasi Anda dan berhasil boot up.

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

Jika log aplikasi Anda dapat diarsipkan ke akun penyimpanan tetapi tidak dikirim ke Azure Log Analytics, periksa untuk melihat apakah Anda menyiapkan ruang kerja dengan benar. Untuk informasi selengkapnya, lihat Membuat ruang kerja Analitik Log. Selain itu, ketahuilah bahwa paket Dasar tidak menyediakan perjanjian tingkat layanan (SLA). Untuk informasi selengkapnya, lihat Perjanjian Tingkat Layanan (SLA) untuk Layanan Online.

Paket perusahaan

Kesalahan 112039: Gagal membeli di Marketplace Azure

Membuat instans paket Azure Spring Apps Enterprise gagal dengan kode kesalahan "112039". Untuk informasi selengkapnya, periksa pesan kesalahan terperinci dalam daftar berikut:

  • "Gagal membeli di Marketplace Azure karena MICROSOFT.SaaS RP tidak terdaftar di langganan Azure.": Paket Azure Spring Apps Enterprise membeli penawaran SaaS dari VMware.

    Anda harus mendaftarkan Microsoft.SaaS penyedia sumber daya sebelum membuat instans Azure Spring Apps Enterprise. Lihat cara mendaftarkan penyedia sumber daya.

  • "Gagal memuat produk katalog vmware-inc.azure-spring-cloud-vmware-tanzu-2 di pasar langganan Azure.": Alamat akun penagihan langganan Azure Anda tidak berada di lokasi yang didukung.

    Untuk informasi selengkapnya, lihat bagian Tidak ada paket yang tersedia untuk '<Lokasi>' pasar.

  • "Gagal membeli di Marketplace Azure karena verifikasi tanda tangan pada perjanjian hukum Marketplace. Periksa langganan Azure telah menyetujui istilah vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr": Langganan Azure Anda belum menandatangani persyaratan untuk penawaran dan paket yang akan dibeli.

    Buka langganan Azure Anda dan jalankan perintah Azure CLI berikut untuk menyetujui persyaratan:

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

    Jika itu tidak membantu, Anda dapat menghubungi tim dukungan dengan info berikut.

    • AZURE_TENANT_ID: ID penyewa Azure yang menghosting langganan Azure
    • AZURE_SUBSCRIPTION_ID: ID langganan Azure yang digunakan untuk membuat instans Azure Spring Apps
    • SPRING_CLOUD_NAME: nama instans yang gagal
    • ERROR_MESSAGE: pesan kesalahan yang diamati

Tidak ada rencana yang tersedia untuk pasar '<Lokasi>'

Saat Anda mengunjungi penawaran SaaS Azure Spring Apps Enterprise di Marketplace Azure, mungkin dikatakan "Tidak ada paket yang tersedia untuk '<Lokasi>' pasar seperti pada gambar berikut.

Cuplikan layar portal Azure yang menunjukkan pesan Kesalahan pasar tidak tersedia.

Paket Azure Spring Apps Enterprise memerlukan pelanggan untuk membayar lisensi ke komponen Tanzu melalui penawaran Marketplace Azure. Untuk membeli di Marketplace Azure, negara atau wilayah akun penagihan untuk langganan Azure Anda harus berada di lokasi geografis penawaran SaaS yang didukung.

Azure Spring Apps Enterprise sekarang mendukung semua lokasi geografis yang Marketplace Azure dukung. Lihat bagian Lokasi geografis yang didukung dari Ketersediaan geografis dan dukungan mata uang untuk marketplace komersial.

Anda dapat melihat akun penagihan untuk langganan Anda jika Anda memiliki akses admin. Lihat melihat akun penagihan.

Saya memerlukan Dukungan Spring Runtime VMware (hanya paket Enterprise)

Paket Enterprise memiliki Dukungan Spring Runtime VMware bawaan, sehingga Anda dapat membuka tiket dukungan ke VMware jika Anda merasa masalah Anda berada dalam cakupan Dukungan Spring Runtime VMware. Untuk lebih memahami Dukungan Spring Runtime VMware itu sendiri, lihat VMware Spring Runtime. Untuk informasi selengkapnya tentang mendaftar dan menggunakan layanan dukungan ini, lihat bagian Dukungan di Tanya Jawab Umum Perusahaan dari VMware. Untuk masalah lain, buka tiket dukungan dengan Microsoft.

Langkah berikutnya