Waktu tunggu Gateway 504 - Waktu tunggu target baca habis

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Tidak ada padanan Dokumentasi Apigee Edge untuk topik ini.

Gejala

Masalah ini muncul sebagai error Gateway Timeout dengan status HTTP 504.

Pesan Error

Anda mungkin melihat {i>error<i} ini di Pemantauan API, Debug, atau alat lainnya. Alasan TARGET_READ_TIMEOUT menunjukkan bahwa runtime Apigee tidak menerima respons tepat waktu dari target selama eksekusi permintaan.

Nilai waktu tunggu baca target default (io.timeout.millis) adalah 55 detik. Artinya, jika setelah 55 detik target tidak merespons, Apigee akan menampilkan pesan error ini:

{"fault":{"faultstring":"Gateway Timeout",
  "detail":{"errorcode":"messaging.adaptors.http.flow.GatewayTimeout",
  "reason":"TARGET_READ_TIMEOUT"}}}

Kemungkinan Penyebab

Penyebab Deskripsi Petunjuk pemecahan masalah berlaku untuk
Target lambat Target tidak menghasilkan respons tepat waktu. Apigee X dan Apigee Hybrid
Masalah konektivitas TargetServer Ada masalah konektivitas umum dengan target ketika <LoadBalancer> dikonfigurasi di TargetEndpoint. Apigee X dan Apigee Hybrid

Penyebab: Target Lambat

Diagnosis

Anda dapat mendiagnosis masalah target lambat menggunakan Alat Debug Apigee:

  1. Buat sesi debug untuk proxy API Anda.
  2. Dalam sesi debug, kirim permintaan dan periksa output debug.

Seperti yang terlihat pada contoh di atas, Permintaan Target melebihi 55 detik, yang merupakan bawaan waktu tunggu target batas tersebut. Batas waktu dapat dikonfigurasi, dan jika Anda telah mengubah waktu tunggu, durasinya Permintaan Target akan sesuai dengan waktu tunggu yang telah Anda tetapkan. Misalnya, jika waktu tunggu Anda adalah 10 detik, maka dalam skenario tersebut, permintaan target akan habis waktu tunggunya setelah 10 detik. "Target lambat" tersebut adalah perilaku yang jelas indikasi bahwa target tidak merespons permintaan tepat waktu.

Resolusi

Apigee merekomendasikan agar Anda menghindari penggunaan target lambat. Misalnya, jika latensi target normal adalah 50 milidetik, dan Anda mengalami latensi 55.000 milidetik, Anda mungkin perlu menyelidikinya jika ada masalah dengan target.

Jika Anda harus meningkatkan waktu tunggu, ikuti langkah-langkah berikut:

  1. Klik tab Develop di editor proxy.
  2. Di panel navigasi, pilih endpoint target yang terpengaruh.
  3. Di editor XML, temukan elemen XML HTTPTargetConnection:

  4. Tambahkan properti io.timeout.millis di bagian <HTTPTargetConnection> dan menentukan batas waktu baru dalam milidetik, misalnya:
    <HTTPTargetConnection>
      <URL>https://my-very-slow-target.example.com</URL>
      <Properties>
        <Property name="io.timeout.millis">120000</Property>
      </Properties>
    </HTTPTargetConnection>

    Pada contoh di atas, waktu tunggu ditingkatkan menjadi 120 detik. Perhatikan bahwa 300 detik adalah batas maksimum. Untuk informasi selengkapnya, lihat Endpoint referensi properti.

  5. Simpan revisi baru dan deploy proxy.

Jika masalah berlanjut, buka Harus mengumpulkan informasi diagnostik di bawah.

Penyebab: Masalah konektivitas TargetServer

Diagnosis

Apigee tidak mengungkapkan penyebab pasti masalah konektivitas saat Anda mengonfigurasi <LoadBalancer> properti endpoint. Anda mungkin dapat menyimpulkan penyebab masalah konektivitas, namun, dari waktu berlalu Permintaan Target. Sebagai metode {i>debugging<i}, Anda dapat mencoba menghapus elemen <LoadBalancer> sepenuhnya, dan mencoba mencapai target secara langsung di proxy.

Untuk mendiagnosis masalah, gunakan Alat Debug.

  1. Buat sesi debug untuk proxy API Anda.
  2. Dalam sesi debug, kirim permintaan dan periksa output debug.

Dalam contoh di atas, diperlukan waktu sembilan detik hingga waktu tunggu terjadi. Karena bukan 55 detik, Anda tahu penyebab error bukan karena batas waktu tunggu terlampaui karena target yang lambat. Secara default, Apigee mencoba kembali koneksi dua kali lagi jika elemen <LoadBalancer> digunakan di TargetEndpoint. Karena Anda mengetahui bahwa koneksi telah dicoba tiga kali secara total, dan waktu tunggu default untuk error koneksi adalah tiga detik (connect.timeout.millis), Anda dapat berasumsi bahwa masalahnya adalah masalah konektivitas.

Resolusi

Jika masalah tersebut terkonfirmasi sebagai waktu tunggu koneksi habis, lihat Error Layanan Peering VPC 503 Tidak Tersedia dengan TARGET_CONNECT_TIMEOUT.

Untuk masalah lainnya, hapus <LoadBalancer> untuk men-debug dan mengungkapkan kode error, dan periksa kode di katalog error.

Harus Mengumpulkan Informasi Diagnostik

Jika masalah berlanjut bahkan setelah mengikuti instruksi di atas, kumpulkan informasi diagnostik, lalu hubungi Google Dukungan Cloud:

  1. Project ID dan nama organisasi Apigee
  2. Nama proxy dan lingkungan.
  3. Jangka waktu masalah.
  4. Frekuensi masalah
  5. Nama host target.
  6. Sesi debug yang bermasalah.