Layanan 503 Tidak Tersedia - Server Backend

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Video

Tonton video berikut untuk mempelajari lebih lanjut cara menyelesaikan Error 503 Service Tidak Tersedia.

Video Deskripsi
Error 503 Layanan Tidak Tersedia dari Server Backend Pelajari hal berikut:
  • Pengantar Error 503 Service Tidak Tersedia di Apigee Edge
  • Pemecahan masalah dan penyelesaian Layanan 503 Tidak Tersedia dari Server Backend secara real-time

Gejala

Aplikasi klien menerima status respons HTTP 503 dengan pesan Service memperkirakan setelah panggilan proxy API.

Pesan error

Anda dapat melihat salah satu pesan error berikut:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

Anda mungkin juga melihat pesan error seperti berikut dalam respons HTTP:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

Catatan: Kode respons dan pesan error di atas hanyalah contoh. Dalam beberapa kasus, Anda mungkin hanya menerima kode respons error tanpa pesan error. Format dan konten kode respons error serta pesan error dapat bervariasi, bergantung pada implementasi server backend.

Penyebab

Kode status HTTP 503 berarti server saat ini tidak dapat menangani permintaan masuk. Biasanya, error ini terjadi karena server terlalu sibuk atau sedang dalam pemeliharaan untuk sementara.

Kemungkinan penyebab respons 503 Service Tidak Tersedia adalah:

Cause Deskripsi Siapa yang dapat melakukan langkah-langkah pemecahan masalah
Server yang Kelebihan Beban Server backend kelebihan beban atau melebihi kapasitasnya dan tidak dapat menangani permintaan klien baru yang masuk. Pengguna Edge Publik dan Private Cloud
Server sedang dalam pemeliharaan Server backend mungkin sedang dalam pemeliharaan untuk sementara. Pengguna Edge Publik dan Private Cloud

Penyebab: Server/Server Kelebihan Beban dalam Pemeliharaan

Di Apigee Edge, Error Layanan Tidak Tersedia 503 dapat ditampilkan dari server backend dalam salah satu keadaan berikut:

  • Server backend kelebihan beban/sibuk dan tidak dapat menangani permintaan baru.
  • Server backend tidak aktif untuk sementara waktu karena sedang ada pemeliharaan.

Diagnosis

Untuk mendiagnosis error, Anda dapat menggunakan salah satu dari tiga metode berikut:

  • Alat pelacak
  • Log akses NGINX
  • Panggilan langsung ke server backend

Klik tab di bawah untuk mempelajari setiap metode.

Alat pelacak

  1. Aktifkan sesi perekaman aktivitas, dan buat panggilan API untuk merekonstruksi masalah - 503 Layanan Tidak Tersedia.
  2. Pilih salah satu permintaan yang gagal dan periksa rekaman aktivitas.
  3. Jelajahi berbagai fase rekaman aktivitas dan temukan lokasi terjadinya kegagalan.
  4. Jika Anda mendapati bahwa error 503 ditampilkan sebagai respons dari server target, penyebab error 503 adalah server target.

    Berikut ini contoh screenshot rekaman aktivitas yang menunjukkan respons 503 Service Tidak Tersedia yang diterima dari server target:

  5. Klik fase Respons yang diterima dari server target, lalu periksa bagian Header Respons dan Konten Respons untuk melihat apakah keduanya memiliki informasi yang berguna:
    • Header Respons dapat berisi header Server, yang menunjukkan tempat respons error dikirim.
    • Konten Respons dapat berisi informasi tambahan tentang alasan server target mengirim kode respons 503.
  6. Pastikan error 503 berasal dari server target dengan memeriksa nilai X-Apigee-fault-source dan X-Apigee-fault-code di Fase AX (Data Analytics Dicatat) dalam pelacakan menggunakan langkah-langkah yang diberikan di bawah ini:
    1. Klik Fase AX (Data Analytics Dicatat) seperti yang ditunjukkan pada screenshot di bawah:
    2. Scroll ke bawah ke bagian Phase Details ke bagian Response Headers dan tentukan nilai X-Apigee-fault-code dan X-Apigee-fault-source seperti yang ditunjukkan di bawah ini:
    3. Jika nilai X-Apigee-fault-source dan X-Apigee-fault-code cocok dengan nilai yang ditunjukkan pada tabel di bawah ini, Anda dapat mengonfirmasi bahwa error 503 berasal dari server target:
      Header Respons Nilai
      X-Apigee-fault-source target
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. Periksa apakah Anda menggunakan perantaian proxy, yaitu apakah endpoint server/target target memanggil proxy lain di Apigee. Untuk menentukan hal ini:
    1. Kembali ke fase Request sent to target server, lalu klik tombol Show Curl dan tentukan alias host server target.
    2. Jika alias host server target mengarah ke alias host virtual, artinya rantai proxy. Dalam kasus ini, Anda harus mengulangi semua langkah di atas untuk proxy berantai sampai Anda mengetahui penyebab sebenarnya error 503 Service Tidak Tersedia. Dalam kasus ini, 503 Service Available dapat terjadi di proxy berantai lainnya di tahap lain yang juga dapat didiagnosis menggunakan playbook ini.
    3. Jika alias host server target mengarah ke server backend Anda, buka Resolution.

Log akses NGINX

Anda juga dapat melihat log akses NGINX untuk menentukan apakah kode status 503 dikirim oleh server backend atau tidak. Cara ini sangat berguna jika masalah telah terjadi sebelumnya, atau jika masalah tersebut terputus-putus dan Anda tidak dapat menangkap rekaman aktivitas di UI. Gunakan langkah-langkah berikut untuk menentukan informasi ini dari log akses NGINX:

  1. Periksa log akses NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. Telusuri Error 503 untuk proxy API tertentu selama durasi tertentu (jika masalah terjadi di masa lalu) atau untuk permintaan yang masih gagal dengan 503.
  3. Jika ada Error 503, periksa apakah error tersebut berasal dari server backend. Jika nilai X-Apigee-fault-source dan X-Apigee-fault-code cocok dengan nilai yang ditunjukkan pada tabel di bawah, berarti error 503 berasal dari server backend:
    Header Respons Nilai
    X-Apigee-fault-source target
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    Berikut adalah contoh entri yang menunjukkan error 503 yang disebabkan oleh server target:

  4. Tinjau Proxy API tertentu dan pastikan Anda menggunakan proxy chaining, yaitu jika server/endpoint target target tidak memanggil proxy lain di Apigee. Jika menggunakan perantaian proxy, Anda perlu mengulangi semua langkah di atas untuk proxy berantai sampai Anda menentukan penyebab error 503 Layanan Tidak Tersedia. Dalam kasus ini, 503 Service Tidak Tersedia dapat terjadi di proxy berantai lainnya juga di tahap lain, yang dapat Anda diagnosis menggunakan playbook ini.
  5. Jika Anda mengonfirmasi bahwa Anda tidak menggunakan perantaian proxy, dan error 503 berasal dari server backend, buka Resolution.

Panggilan ke Server Backend

Anda dapat melakukan panggilan langsung ke server backend dan memastikan bahwa Anda mendapatkan respons 503 Service memperkirakan yang sama seperti yang diterima ketika permintaan dibuat melalui Apigee Edge.

  1. Pastikan Anda memiliki semua header, parameter kueri, dan kredensial yang diperlukan yang harus diteruskan ke server backend sebagai bagian dari permintaan.
  2. Jika layanan backend dapat diakses secara publik, Anda dapat menggunakan perintah curl, Postman atau REST Client lainnya dan memanggil API server backend secara langsung.
  3. Jika server backend hanya dapat diakses dari Message Processors, Anda dapat menggunakan perintah curl, Postman, atau REST Client lainnya dan memanggil API server backend langsung dari Pemroses Pesan.
  4. Verifikasi bahwa layanan backend memang menampilkan error 503 Service Tidak Tersedia.

Resolusi

Jika yakin bahwa error 503 berasal dari server backend, Anda dapat melakukan hal berikut untuk mengatasi masalah tersebut:

  • Jika masalah tersebut disebabkan karena server backend sedang dalam pemeliharaan, Anda dapat membuat server backend tersebut online setelah masa pemeliharaan.
  • Jika masalah ini disebabkan karena server backend kelebihan beban, perbaiki masalah tersebut jika Anda memiliki akses ke server backend. Jika tidak, Anda mungkin perlu bekerja sama dengan tim server backend untuk memperbaiki masalah ini.

Mendiagnosis Masalah menggunakan Pemantauan API

Pemantauan API memungkinkan Anda mengisolasi area masalah dengan cepat untuk mendiagnosis masalah error, performa, dan latensi beserta sumbernya, seperti aplikasi developer, proxy API, target backend, atau platform API.

Pelajari contoh skenario yang menunjukkan cara memecahkan masalah 5xx pada API menggunakan API Monitoring. Misalnya, Anda mungkin ingin menyiapkan pemberitahuan yang akan diberi tahu saat jumlah kesalahan messaging.adaptors.http.flow.ErrorResponseCode melebihi batas tertentu.

Harus mengumpulkan informasi diagnostik

Jika masalah terus berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Dukungan Apigee.

Jika Anda adalah pengguna cloud publik, berikan informasi berikut:

  • Nama Organisasi
  • Nama Lingkungan
  • Nama Proxy API
  • Menyelesaikan perintah curl untuk mereproduksi error 503
  • File rekaman aktivitas yang berisi permintaan dengan error 503 Service Tidak Tersedia
  • Jika error 503 tidak terjadi saat ini, berikan jangka waktu dengan informasi zona waktu saat error 503 terjadi di masa lalu.

Jika Anda adalah pengguna cloud pribadi, berikan informasi berikut:

  • Pesan error lengkap yang diamati untuk permintaan yang gagal.
  • Organisasi, Nama Lingkungan, dan Nama Proxy API yang error 503-nya Anda amati.
  • Paket Proxy API.
  • File pelacakan yang berisi permintaan dengan error 503 Service Tidak Tersedia.
  • Log akses NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • Log Pemroses Pesan.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Jangka waktu dengan informasi zona waktu saat error 503 terjadi.