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 Layanan 503 Tidak Tersedia dari Server Backend | Pelajari hal berikut:
|
Gejala
Aplikasi klien menerima status respons HTTP 503 dengan pesan Layanan Tidak Tersedia berikut panggilan proxy API.
Pesan error
Anda akan 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 {i>error<i} 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 hanya akan menerima kode respons error tanpa pesan error apa pun. Format dan isi kode respons error serta pesan error dapat bervariasi bergantung pada untuk implementasi server backend.
Penyebab
Kode status HTTP 503 berarti bahwa server saat ini tidak dapat menangani permintaan. Biasanya, kesalahan ini terjadi karena server terlalu sibuk atau sementara waktu mati untuk pemeliharaan.
Kemungkinan penyebab respons Layanan Tidak Tersedia 503 adalah:
Cause | Deskripsi | Siapa yang dapat melakukan langkah-langkah pemecahan masalah |
---|---|---|
Server Kelebihan Beban | Server backend kelebihan beban atau melebihi kapasitasnya dan tidak dapat menangani ada permintaan klien yang masuk. | Pengguna Edge Public dan Private Cloud |
Server sedang dalam pemeliharaan | Server backend mungkin sedang dalam pemeliharaan untuk sementara. | Pengguna Edge Public dan Private Cloud |
Penyebab: Server/Server kelebihan beban dalam Pemeliharaan
Di Apigee Edge, Error 503 Service Tidak Tersedia dapat ditampilkan dari server backend dalam salah satu situasi berikut:
- Server backend kelebihan beban/sibuk dan tidak dapat menangani permintaan baru.
- Server backend mati untuk sementara waktu karena pemeliharaan.
Diagnosis
Untuk mendiagnosis error, Anda dapat menggunakan salah satu dari tiga metode berikut:
- Alat rekaman aktivitas
- Log akses NGINX
- Panggilan langsung ke server backend
Klik tab di bawah untuk mempelajari setiap metode.
Alat rekaman aktivitas
- Aktifkan sesi rekaman aktivitas, dan membuat panggilan API untuk mereproduksi masalah - Layanan 503 Tidak Tersedia.
- Pilih salah satu permintaan yang gagal dan periksa rekaman aktivitasnya.
- Menavigasi berbagai fase pelacakan dan menemukan tempat terjadinya kegagalan.
- Jika Anda menemukan bahwa {i>error <i}503 dikembalikan
sebagai respons dari server target,
penyebab {i>error <i}503
adalah server target.
Berikut contoh screenshot rekaman aktivitas yang menunjukkan respons 503 Layanan Tidak Tersedia yang diterima dari server target:
- Klik fase Respons yang diterima dari server target dan periksa
Header Respons dan Konten Respons untuk melihat apakah keduanya memiliki informasi yang berguna:
- Header Respons mungkin berisi header Server, yang menunjukkan dari mana respons {i>error<i} dikirim.
- Konten Respons dapat berisi informasi tambahan tentang alasannya server target mengirim kode respons 503.
- Konfirmasi bahwa error 503 berasal dari server target dengan memeriksa
nilai X-Apigee-fault-source dan X-Apigee-fault-code dalam AX
(Data Analytics Direkam) Fase dalam rekaman aktivitas menggunakan langkah-langkah berikut:
- Klik Fase AX (Data Analytics Dicatat) seperti yang ditunjukkan pada screenshot di bawah:
- Gulir ke bawah Detail Fase ke bagian Header Respons dan tentukan nilainya X-Apigee-fault-code dan X-Apigee-fault-source seperti yang ditunjukkan di bawah ini:
- Jika nilai X-Apigee-fault-source dan X-Apigee-fault-code cocok dengan nilai tersebut
yang ditampilkan pada tabel di bawah ini, Anda dapat mengkonfirmasi bahwa {i>error<i} 503 berasal dari
server target:
Header Respons Nilai X-Apigee-fault-source target X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
- Periksa apakah Anda menggunakan perantaian proxy, yaitu jika endpoint target/server target
yang memanggil proxy lain di Apigee. Untuk menentukan hal ini:
- Kembali ke fase Permintaan dikirim ke server target dan klik tombol Show Curl dan tentukan alias host server target.
- Jika alias {i>host<i} server target mengarah ke alias {i>host<i} virtual, maka itu perantaian proxy. Dalam hal ini, Anda perlu mengulangi semua langkah di atas untuk rantai sampai Anda menentukan apa yang sebenarnya menyebabkan kesalahan 503 Service Tidak Tersedia. Dalam kasus ini, Layanan 503 Tidak Tersedia dapat terjadi di proxy berantai lainnya di serta yang dapat didiagnosis menggunakan playbook ini.
- Jika alias host server target mengarah ke server backend Anda, buka Resolusi.
Log akses NGINX
Anda juga dapat melihat log log NGINX untuk mengetahui apakah kode status 503 telah dikirim oleh server backend. Hal ini sangat berguna jika masalah tersebut pernah terjadi sebelumnya atau jika masalahnya hanya sesekali dan Anda tidak dapat menangkap rekaman aktivitas di UI. Gunakan langkah-langkah berikut untuk menentukan informasi ini dari log akses NGINX:
- Periksa log akses NGINX.
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- Menelusuri Error 503 untuk proxy API tertentu selama durasi tertentu (jika masalah terjadi di masa lalu) atau untuk permintaan yang masih gagal dengan 503.
- Jika ada 503 Error, periksa apakah error tersebut berasal dari server backend.
Jika nilai X-Apigee-fault-source dan X-Apigee-fault-code cocok dengan
nilai ditampilkan
pada tabel di bawah ini, kesalahan 503 berasal dari server backend:
Header Respons Nilai X-Apigee-fault-source target X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode Berikut ini contoh entri yang menunjukkan error 503 yang disebabkan oleh server target:
- 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 perantaian {i>proxy<i}, Anda harus mengulangi semua langkah di atas untuk {i>proxy<i} berantai sampai Anda menentukan apa yang sebenarnya menyebabkan kesalahan Layanan Tidak Tersedia. Dalam kasus ini, 503 Layanan Tidak Tersedia juga dapat terjadi di proxy berantai lainnya di tahap lain, yang dapat Anda diagnosis menggunakan playbook ini.
- Jika Anda mengonfirmasi bahwa Anda tidak menggunakan perantaian proxy, dan error 503 berasal dari server backend, lalu buka Resolution.
Panggilan ke Server Backend
Anda dapat melakukan panggilan langsung ke server backend dan memastikan bahwa Anda mendapatkan Respons Layanan 503 Tidak Tersedia seperti yang diterima saat permintaan dibuat melalui Apigee Edge.
- Pastikan Anda memiliki semua header, parameter kueri, dan kredensial yang diperlukan harus diteruskan ke server backend sebagai bagian dari permintaan.
- Jika layanan backend dapat diakses secara publik, Anda dapat menggunakan perintah curl, Postman atau REST Client lainnya, lalu panggil API server backend secara langsung.
- Jika server backend hanya dapat diakses dari Pemroses Pesan, Anda bisa menggunakan perintah curl, Postman, atau REST Client lainnya dan panggil API server backend secara langsung dari Pemroses Pesan.
- Verifikasi bahwa layanan backend memang menampilkan error 503 Service Tidak Tersedia.
Resolusi
Jika Anda memastikan bahwa {i>error <i}503 berasal dari server {i>backend<i}, Anda dapat untuk mengatasi masalah tersebut:
- Jika masalah disebabkan karena server {i> backend <i}sedang dalam pemeliharaan, Anda dapat membawa server {i>backend <i} {i>online <i}setelah periode pemeliharaan.
- Jika masalah disebabkan karena server backend kelebihan beban, memperbaiki masalah ini jika Anda memiliki akses ke server {i>backend<i}. Sebaliknya Anda mungkin perlu bekerja sama dengan tim server backend Anda untuk memperbaiki masalah tersebut.
Mendiagnosis Masalah menggunakan Pemantauan API
Pemantauan API memungkinkan Anda mengisolasi area masalah dengan cepat untuk mendiagnosis kesalahan, kinerja, masalah latensi dan sumbernya, seperti aplikasi developer, proxy API, target backend, atau platform API.
Mengikuti contoh skenario yang menunjukkan cara memecahkan masalah 5xx dengan API menggunakan Pemantauan API. Misalnya, Anda mungkin ingin menyiapkan peringatan yang akan diberitahukan saat jumlah kesalahan messaging.adaptors.http.flow.ErrorResponseCode melebihi batas tertentu.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan berikut informasi diagnostik, dan kemudian menghubungi 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 Layanan Tidak Tersedia
- Jika error 503 tidak terjadi saat ini, berikan jangka waktu dengan zona waktu saat kesalahan 503 terjadi di masa lalu.
Jika Anda adalah pengguna cloud pribadi, berikan informasi berikut:
- Pesan error lengkap diamati untuk permintaan yang gagal.
- Organisasi, Nama Lingkungan, dan Nama Proxy API yang Anda lihat error 503-nya.
- Paket Proxy API.
- File rekaman aktivitas yang berisi permintaan dengan error 503 Layanan 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 terjadi error 503.