Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Gejala
Aplikasi klien menerima kode status HTTP 504 dengan pesan "Waktu Tunggu Gateway" sebagai respons terhadap panggilan API.
Respons error ini menunjukkan bahwa klien tidak menerima respons tepat waktu dari Apigee Edge atau server backend selama menjalankan panggilan API.
Pesan Error
Aplikasi klien menerima kode respons berikut:
HTTP/1.1 504 Gateway Timeout
Kode ini mungkin diikuti dengan pesan error yang mirip dengan yang di bawah ini:
<html> <head><title>504 Gateway Timeout</title></head> <body bgcolor="white"> <center><h1>504 Gateway Timeout</h1></center> </body> </html>
Apa yang menyebabkan waktu tunggu gateway habis?
Jalur umum untuk permintaan API yang dibuat melalui Apigee Edge adalah Client -> {i>Router<i} -> Pemroses Pesan -> Server Backend seperti yang ditunjukkan pada gambar di bawah:
Aplikasi klien, router, dan Pemroses Pesan dikonfigurasi dengan nilai waktu tunggu yang sesuai. Apigee Edge mengharapkan respons untuk setiap permintaan API dalam jangka waktu berdasarkan nilai waktu tunggu. Jika respons tidak diterima dalam jangka waktu yang ditentukan, respons 504 Gateway Timeout akan ditampilkan.
Kemungkinan Penyebab
Di Apigee Edge, penyebab umum respons 504 Gateway Timeout dari server backend adalah:
Cause | Deskripsi | Petunjuk Pemecahan Masalah |
---|---|---|
Server Backend merespons dengan Waktu Tunggu Gateway 504 | Waktu server backend habis dan menampilkan respons 504 Gateway Timeout ke Pemroses Pesan. | Pengguna Edge Private dan Cloud Publik |
Server Backend merespons dengan Waktu Tunggu Gateway 504
Server backend dapat merespons dengan kode respons HTTP 504 Gateway Timeout.
Diagnosis
Bagian ini menjelaskan cara mendiagnosis 504 Gateway Timeout dengan benar. Prosedur untuk Pribadi dan Pengguna Cloud Publik akan dicantumkan.
Prosedur #1: Menggunakan Trace (pengguna Cloud Pribadi dan Publik)
- Aktifkan Trace di UI Apigee untuk API yang terpengaruh.
- Kirim permintaan ke server backend.
- Jika permintaan API yang gagal menampilkan respons 504 dari server backend di Trace, maka penyebab 504 {i>Gateway Timeout<i} adalah server backend.
- Untuk menentukan waktu respons, klik Respons diterima dari server target
di Trace. Dalam contoh yang ditunjukkan, waktu berlalu adalah 60004 md:
Bagian Detail Fase memberikan informasi tambahan:
- Fungsi ini menyoroti respons 504 Gateway Timeout yang diterima dari server backend.
- Bagian Konten Respons menampilkan seluruh isi respons dari server backend. Seperti disebutkan sebelumnya, format dan isi payload respons mungkin berbeda berdasarkan implementasi server backend.
- Header Respons > Bagian Server dapat menunjukkan asal respons.
- Untuk melihat data Analytics dan mengonfirmasi diagnosis, klik Data Analytics Dicatat
di Trace, seperti yang ditampilkan dalam gambar di bawah ini:
Bagian Respons Header di Detail Fase menampilkan nilai
X-Apigee-fault-code
danX-Apigee-fault-source
, seperti yang ditampilkan dalam gambar di bawah ini:Jika kolom ini berisi nilai yang ditunjukkan dalam tabel di bawah, respons error 504 berasal dari server backend:
Header Respons Nilai X-Apigee-fault-source target X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
Periksa
perantaian proxy. Ikuti langkah-langkah berikut untuk menentukan apakah server backend memanggil proxy lain
di Apigee:
- Kembali ke fase Permintaan dikirim ke server target dan klik Tombol Show Curl untuk melihat alias host server backend.
- Jika alias host server backend mengarah ke alias host virtual, berarti perantaian proxy saat ini. Ulangi langkah-langkah di atas untuk setiap proxy berantai guna mendiagnosis penyebab Gateway 504 Respons error waktu tunggu habis. 504 Waktu tunggu gateway habis yang terjadi di proxy berantai pada tahap lain siklus permintaan/respons dapat didiagnosis menggunakan playbook ini.
- Jika alias host server backend mengarah ke server backend, lanjutkan ke Resolusi.
Prosedur #2: Panggil API server backend secara langsung (pengguna Cloud Publik dan Pribadi)
Panggil server backend secara langsung untuk mengonfirmasi perilaku respons 504 Gateway Timeout yang sama ditemukan saat permintaan dibuat melalui Apigee Edge.
- Pastikan Anda memiliki semua header, parameter kueri, dan kredensial yang diperlukan untuk 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 dan panggil API server backend secara langsung. - Jika server backend hanya dapat diakses dari Pemroses Pesan, gunakan
curl
{i>Postman<i}, atau Klien REST lainnya untuk memanggil API server backend langsung dari Pemroses Pesan. - Jika layanan backend menampilkan respons Gateway Timeout 504, lanjutkan ke Resolusi.
Prosedur #3: Periksa Log Akses NGINX (khusus pengguna Private Cloud)
Log akses NGINX dapat membantu menentukan apakah respons error 504 dikirim oleh server backend atau tidak. Hal ini sangat berguna jika masalah terjadi di masa lalu, terjadi sesekali, atau tidak dapat diketahui di Trace. Gunakan langkah-langkah berikut untuk memeriksa log akses NGINX:
- Lihat log akses NGINX menggunakan perintah ini:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- Periksa respons error 504 untuk proxy API yang terpengaruh. Anda dapat memeriksa periode waktu tertentu, apakah masalah terjadi di masa lalu, atau tentukan apakah permintaan masih gagal dengan respons error 504.
- Jika ada respons kesalahan 504, tentukan apakah respons kesalahan berasal dari server backend.
- Tinjau proxy API yang terpengaruh untuk memeriksa rantai proxy Artinya, server backend/endpoint target memanggil proxy lain di Apigee. Jika proxy API menggunakan proxy chaining , ulangi langkah-langkah di atas untuk setiap proxy berantai guna mendiagnosis penyebab Waktu Tunggu Gateway 504 respons error yang ada. 504 Waktu tunggu gateway yang terjadi di proxy berantai pada tahap lain dapat didiagnosis menggunakan playbook ini.
- Jika tidak ada perantaian proxy, dan respons error 504 berasal dari server backend, lanjutkan ke bagian Resolution.
Gambar di bawah ini adalah contoh entri log NGINX yang menunjukkan respons error 504 yang disebabkan oleh server target:
Jika kolom X-Apigee-fault-source
dan X-Apigee-fault-code
berisi
nilai yang ditunjukkan pada tabel di bawah, respons 504 berasal dari server backend:
Header Respons | Nilai |
---|---|
X-Apigee-fault-source | target |
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
Prosedur #4: Menggunakan Pemantauan API (khusus pengguna Cloud Publik)
Pemantauan API memungkinkan Anda mengisolasi masalah area dengan cepat untuk mendiagnosis masalah error, performa, dan latensi beserta 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, siapkan peringatan untuk memberi tahu administrator saat jumlah kode status 504 melampaui nilai minimum tertentu.
Resolusi
Menggunakan prosedur diagnostik yang diuraikan di atas, Anda dapat bekerja sama dengan tim server backend untuk memperbaiki masalah di server backend. Termasuk menyesuaikan waktu tunggu di server backend atau waktu tunggu di load balancer di depan server target.
Kumpulkan Informasi Diagnostik
Jika masalah berlanjut, bagikan informasi diagnostik berikut kepada Dukungan Apigee.
Jika Anda adalah pengguna Cloud Publik, berikan informasi berikut:
- Nama Organisasi
- Nama Lingkungan
- Nama Proxy API
- Perintah
curl
lengkap yang digunakan untuk mereproduksi respons error 504 - File rekaman aktivitas dengan permintaan API yang menerima respons error Waktu Tunggu Gateway 504
Jika Anda adalah pengguna Private Cloud, berikan informasi berikut:
- Pesan error lengkap yang diamati untuk permintaan yang gagal
- Nama Lingkungan
- Paket Proxy API
- File rekaman aktivitas dengan permintaan API yang menerima respons error 504 Gateway Timeout
- 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