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 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 penyebab waktu tunggu gateway?

Jalur umum untuk permintaan API yang dibuat melalui Apigee Edge adalah Klien -> Router -> Message Processor -> Server Backend 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 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 Untuk
Server Backend merespons dengan 504 Gateway Timeout Server backend mengalami waktu tunggu habis dan menampilkan respons 504 Gateway Timeout ke Message Processor. Pengguna Edge Private dan Public Cloud

Server Backend merespons dengan 504 Gateway Timeout

Server backend dapat merespons dengan kode respons HTTP 504 Gateway Timeout.

Diagnosis

Bagian ini menjelaskan cara mendiagnosis 504 Gateway Timeout dengan benar. Prosedur untuk pengguna Cloud Pribadi dan Publik tercantum.

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

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

    detail fase dari UI

    Bagian Detail Fase memberikan informasi tambahan:

    • Bagian ini menyoroti respons 504 Gateway Timeout yang diterima dari server backend.
    • Bagian Response Content menampilkan isi lengkap respons dari server backend. Seperti yang disebutkan sebelumnya, format dan konten payload respons dapat berbeda berdasarkan penerapan server backend.
    • Bagian Response Header > 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 analisis dari rekaman aktivitas

    Bagian Header Respons pada Detail Fase 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 perantaian proxy. Ikuti langkah-langkah berikut untuk menentukan apakah server backend memanggil proxy lain di Apigee:
    1. Kembali ke fase Permintaan dikirim ke server target, lalu klik tombol Tampilkan Curl untuk melihat alias host server backend.
    2. Jika alias host server backend mengarah ke alias host virtual, maka penggabungan proxy akan berlaku. Ulangi langkah-langkah di atas untuk setiap proxy berantai guna mendiagnosis penyebab respons error 504 Gateway Timeout. Waktu tunggu gateway 504 yang terjadi di proxy berantai pada tahap lain dalam siklus permintaan/respons dapat didiagnosis menggunakan buku pedoman ini.
    3. 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 yang terjadi saat 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 Klien REST lainnya untuk memanggil API server backend langsung dari Pemroses Pesan.
  4. Jika layanan backend menampilkan respons 504 Gateway Timeout, lanjutkan ke Penyelesaian.

Prosedur #3: Periksa Log Akses NGINX (Khusus pengguna Private Cloud)

Log akses NGINX dapat membantu menentukan apakah respons error 504 dikirim oleh server backend. Hal ini sangat berguna jika masalah terjadi di masa lalu, bersifat sementara, atau tidak dapat direkam 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, jika masalah terjadi di masa lalu, atau menentukan apakah permintaan masih gagal dengan respons error 504.
  3. Jika ada respons error 504, tentukan apakah respons error berasal dari server backend.
  4. Gambar di bawah adalah contoh entri log NGINX yang menunjukkan 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 ditampilkan dalam 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 penggabungan proxy yaitu, server backend/endpoint target memanggil proxy lain di Apigee. Jika proxy API menggunakan penggabungan proxy , ulangi langkah-langkah di atas untuk setiap proxy yang digabungkan guna mendiagnosis penyebab respons error 504 Gateway Timeout. Waktu tunggu gateway 504 yang terjadi di proxy berantai pada tahap lain dapat didiagnosis menggunakan playbook ini.
  6. Jika tidak ada proxy chaining, dan respons error 504 berasal dari server backend, lanjutkan ke Penyelesaian.

Prosedur #4: Menggunakan API Monitoring (Khusus pengguna Cloud Publik)

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

Ikuti langkah-langkah dalam contoh skenario yang menunjukkan cara memecahkan masalah 5xx dengan API Anda menggunakan Pemantauan API. Misalnya, siapkan pemberitahuan untuk memberi tahu administrator saat jumlah kode status 504 melebihi batas tertentu.

Resolusi

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

Mengumpulkan Informasi Diagnostik

Jika masalah berlanjut, bagikan informasi diagnostik berikut kepada Dukungan Apigee.

Jika Anda adalah pengguna Public Cloud, 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 Message Processor
    /opt/apigee/var/log/edge-message-processor/logs/system.log