Layanan 503 Tidak Tersedia - Server Backend

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

Video

Tonton video berikut untuk mempelajari lebih lanjut cara mengatasi Error Layanan Tidak Tersedia 503.

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

Gejala

Aplikasi klien menerima status respons HTTP 503 dengan pesan Layanan Tidak Tersedia 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 hanya 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 penerapan 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 tidak aktif sementara karena pemeliharaan.

Kemungkinan penyebab respons Layanan Tidak Tersedia 503 adalah:

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

Penyebab: Server Kelebihan Beban/Server dalam Pemeliharaan

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

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

Diagnosis

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

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

Klik tab di bawah untuk mempelajari setiap metode.

Alat pelacakan

  1. Aktifkan sesi pelacakan , dan lakukan panggilan API untuk mereproduksi masalah - Layanan Tidak Tersedia 503.
  2. Pilih salah satu permintaan yang gagal dan periksa pelacakannya.
  3. Telusuri berbagai fase pelacakan dan temukan tempat terjadinya kegagalan.
  4. Jika Anda menemukan bahwa error 503 ditampilkan sebagai respons dari server target, penyebab error 503 adalah server target.

    Berikut adalah contoh screenshot pelacakan yang menampilkan respons Layanan Tidak Tersedia 503 yang diterima dari server target:

  5. Klik fase Respons diterima dari server target dan buka bagian Header Respons dan Konten Respons untuk melihat apakah ada informasi yang berguna:
    • Header Respons mungkin berisi header Server, yang menunjukkan tempat respons error dikirim.
    • Konten Respons mungkin berisi informasi tambahan tentang alasan server target mengirim kode respons 503.
  6. Konfirmasi bahwa error 503 berasal dari server target dengan memeriksa nilai X-Apigee-fault-source dan X-Apigee-fault-code di Fase AX (Data Analytics Direkam) dalam pelacakan menggunakan langkah-langkah yang diberikan di bawah:
    1. Klik Fase AX (Data Analytics Direkam) seperti yang ditunjukkan dalam screenshot di bawah:
    2. Scroll ke bawah Detail Fase ke bagian Header Respons dan tentukan nilai dari X-Apigee-fault-code dan X-Apigee-fault-source seperti yang ditunjukkan di bawah:
    3. Jika nilai X-Apigee-fault-source dan X-Apigee-fault-code cocok dengan nilai yang ditampilkan dalam tabel di bawah, 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 proxy chaining, yaitu jika server target/endpoint target memanggil proxy lain di Apigee. Untuk menentukannya:
    1. Kembali ke fase Permintaan dikirim ke server target dan klik tombol Tampilkan Curl serta tentukan alias host server target.
    2. Jika alias host server target mengarah ke alias host virtual, berarti proxy chaining. Dalam hal ini, Anda harus mengulangi semua langkah di atas untuk proxy yang dirantai hingga Anda menentukan penyebab sebenarnya dari error Layanan Tidak Tersedia 503. Dalam kasus ini, Layanan Tidak Tersedia 503 mungkin terjadi di proxy lain yang dirantai pada tahap lain juga, yang dapat didiagnosis menggunakan playbook ini.
    3. Jika alias host server target mengarah ke server backend Anda, buka Resolusi.

Log akses NGINX

Anda juga dapat merujuk ke log akses NGINX untuk menentukan apakah kode status 503 dikirim oleh server backend. Hal ini sangat berguna jika masalah terjadi di masa lalu atau jika masalahnya tidak menentu dan Anda tidak dapat mengambil pelacakan 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. Cari 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 ditampilkan dalam tabel di bawah, 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 menampilkan error 503 yang disebabkan oleh server target:

  4. Tinjau Proxy API tertentu dan pastikan Anda menggunakan proxy chaining yaitu, jika server target/endpoint target tidak memanggil proxy lain di Apigee. Jika Anda menggunakan proxy chaining, Anda harus mengulangi semua langkah di atas untuk proxy yang dirantai hingga Anda menentukan penyebab sebenarnya dari error Layanan Tidak Tersedia 503. Dalam kasus ini, Layanan Tidak Tersedia 503 mungkin terjadi di proxy lain yang dirantai pada tahap lain juga, yang dapat didiagnosis menggunakan playbook ini.
  5. Jika Anda mengonfirmasi bahwa Anda tidak menggunakan proxy chaining, dan error 503 berasal dari server backend Anda, buka Resolusi.

Panggilan ke Server Backend

Anda dapat melakukan panggilan langsung ke server backend dan memverifikasi bahwa Anda mendapatkan respons Layanan Tidak Tersedia 503 yang sama seperti yang diterima saat 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 Klien REST lainnya dan memanggil API server backend secara langsung.
  3. Jika server backend hanya dapat diakses dari Message Processor, Anda dapat menggunakan perintah curl, Postman, atau Klien REST lainnya dan memanggil API server backend secara langsung dari Message Processor.
  4. Verifikasi bahwa layanan backend memang menampilkan error Layanan Tidak Tersedia 503.

Resolusi

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

  • Jika masalah disebabkan karena server backend tidak aktif karena pemeliharaan, Anda dapat mengaktifkan server backend setelah periode pemeliharaan.
  • Jika masalah disebabkan karena server backend kelebihan beban, maka 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 serta sumbernya, seperti aplikasi developer, proxy API, target backend, atau platform API.

Ikuti skenario contoh yang menunjukkan cara memecahkan masalah 5xx dengan API Anda menggunakan Pemantauan API. Misalnya, Anda mungkin ingin menyiapkan pemberitahuan untuk mendapatkan notifikasi saat jumlah kesalahan messaging.adaptors.http.flow.ErrorResponseCode melebihi batas tertentu.

Informasi diagnostik yang harus dikumpulkan

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

Jika Anda adalah pengguna cloud publik, berikan informasi berikut:

  • Nama Organisasi
  • Nama Lingkungan
  • Nama Proxy API
  • Perintah curl lengkap untuk mereproduksi error 503
  • File pelacakan yang berisi permintaan dengan error Layanan Tidak Tersedia 503
  • 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.
  • Nama Organisasi, Nama Lingkungan, dan Nama Proxy API yang Anda amati error 503.
  • Paket Proxy API.
  • File pelacakan yang berisi permintaan dengan error Layanan Tidak Tersedia 503.
  • Log akses NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • Log Message Processor.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Jangka waktu dengan informasi zona waktu saat error 503 terjadi.