Waktu Tunggu Gateway 504 dari Server Backend

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

Gejala

Aplikasi klien menerima kode status HTTP 504 dengan pesan "Gateway Timeout" sebagai respons terhadap panggilan API.

Respons error ini menunjukkan bahwa klien tidak menerima respons yang tepat waktu dari Apigee Edge atau server backend selama eksekusi 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 -> Router -> Message Processor -> Backend Server seperti yang ditunjukkan pada gambar di bawah:

Jalur permintaan API

Aplikasi klien, router, dan Pemroses Pesan dikonfigurasi dengan nilai waktu tunggu yang sesuai. Apigee Edge mengharapkan respons untuk setiap permintaan API dalam jangka waktu tertentu berdasarkan nilai waktu tunggu. Jika respons tidak diterima dalam jangka waktu yang ditentukan, respons Waktu Tunggu Gateway 504 akan ditampilkan.

Kemungkinan Penyebab

Di Apigee Edge, penyebab umum respons Gateway Timeout 504 dari server backend adalah:

Cause Deskripsi Petunjuk Pemecahan Masalah Untuk
Server Backend yang merespons dengan Waktu Tunggu Gateway 504 Waktu server backend habis dan mengembalikan respons Waktu Tunggu Gateway 504 ke Prosesor Pesan. Pengguna Cloud Pribadi dan Publik Edge

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 Waktu Tunggu Gateway 504 dengan benar. Prosedur untuk pengguna Cloud Pribadi dan Publik telah tercantum.

Prosedur #1: Menggunakan Trace (pengguna Cloud Pribadi dan Publik)

  1. Aktifkan Trace di UI Apigee untuk API yang terpengaruh.
  2. Kirim permintaan ke server backend.
  3. Jika permintaan API yang gagal menampilkan respons 504 dari server backend di Trace, penyebab Waktu Tunggu Gateway 504 adalah server backend.
  4. Untuk menentukan waktu respons, klik fase Response received from target server di Trace. Pada contoh yang ditampilkan, waktu yang berlalu adalah 60004 md:

    detail fase dari UI

    Bagian Detail Fase memberikan informasi tambahan:

    • Kode ini menandai respons 504 Gateway Timeout yang diterima dari server backend.
    • Bagian Response Content menampilkan seluruh isi respons dari server backend. Seperti disebutkan sebelumnya, format dan konten payload respons mungkin berbeda berdasarkan implementasi server backend.
    • Bagian Header Respons > Server dapat menunjukkan asal respons.
  5. Untuk melihat data Analytics dan mengonfirmasi diagnosis, klik fase Data Analytics Direkam di Trace, seperti yang ditunjukkan pada gambar di bawah:

    detail Analytics dari trace

    Bagian Response Headers dari Phase Details menampilkan nilai X-Apigee-fault-code dan X-Apigee-fault-source, seperti yang ditunjukkan pada gambar di bawah:

    detail fase analisis dari UI

    Jika kolom ini berisi nilai yang ditampilkan 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
  6. Periksa proxy chaining. Ikuti langkah-langkah berikut untuk menentukan apakah server backend memanggil proxy lain di Apigee:
    1. Kembali ke fase Request sent to target server, lalu klik tombol Show Curl untuk melihat alias host server backend.
    2. Jika alias host server backend menunjuk ke alias host virtual, perantaian proxy akan diterapkan. Ulangi langkah-langkah di atas untuk setiap proxy berantai guna mendiagnosis penyebab respons error Waktu Tunggu Gateway 504. Waktu tunggu gateway 504 yang terjadi dalam proxy berantai pada tahap lain siklus permintaan/respons dapat didiagnosis menggunakan playbook ini.
    3. Jika alias host server backend mengarah ke server backend, lanjutkan ke Resolution.

Prosedur #2: Panggil API server backend secara langsung (pengguna Cloud Publik dan Pribadi)

Panggil server backend secara langsung untuk mengonfirmasi perilaku respons Gateway Timeout 504 yang sama yang ditemukan ketika permintaan dibuat melalui Apigee Edge.

  1. Pastikan Anda memiliki semua header, parameter kueri, dan kredensial yang diperlukan untuk 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 Pemroses Pesan, gunakan perintah curl, Postman, atau REST Client lainnya untuk memanggil API server backend secara langsung dari Pemroses Pesan.
  4. Jika layanan backend menampilkan respons Waktu Tunggu Gateway Gateway 504, lanjutkan ke Resolution.

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. Cara ini sangat berguna jika masalah pernah terjadi di masa lalu, sesekali, atau tidak dapat ditangkap di Trace. Gunakan langkah-langkah berikut untuk memeriksa log akses NGINX:

  1. Lihat log akses NGINX menggunakan perintah ini:
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. Periksa respons error 504 untuk proxy API yang terpengaruh. Anda dapat memeriksa jangka waktu tertentu, apakah masalah tersebut pernah terjadi sebelumnya, atau menentukan apakah permintaan masih gagal dengan respons error 504.
  3. Jika ada respons error 504, tentukan apakah respons error tersebut berasal dari server backend atau tidak.
  4. Gambar di bawah ini adalah contoh entri log NGINX yang menampilkan respons error 504 yang disebabkan oleh server target:

    contoh log nginx

    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
  5. Tinjau proxy API yang terpengaruh untuk memeriksa rantai proxy, yaitu, server backend/endpoint target memanggil proxy lain di Apigee. Jika proxy API menggunakan rantai proxy , ulangi langkah-langkah di atas untuk setiap proxy berantai guna mendiagnosis penyebab respons error Waktu Tunggu Gateway 504. Waktu tunggu Gateway 504 yang terjadi dalam proxy berantai pada tahap lain dapat didiagnosis menggunakan playbook ini.
  6. Jika tidak ada perantaian proxy, dan respons error 504 berasal dari server backend, lanjutkan ke Resolution.

Prosedur #4: Menggunakan Pemantauan API (khusus pengguna Cloud Publik)

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.

Ikuti contoh skenario yang menunjukkan cara memecahkan masalah 5xx pada API Anda menggunakan API Monitoring. Misalnya, siapkan pemberitahuan untuk memberi tahu administrator saat jumlah kode status 504 melebihi nilai minimum tertentu.

Resolusi

Dengan menggunakan prosedur diagnostik yang diuraikan di atas, Anda dapat bekerja dengan tim server backend untuk memperbaiki masalah di server backend. Hal ini dapat mencakup penyesuaian waktu tunggu di server backend atau waktu tunggu pada load balancer mana pun di depan server target.

Mengumpulkan 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