Waktu tunggu gateway 504 - Waktu tunggu pembacaan target habis

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Tidak ada dokumentasi Apigee Edge yang setara untuk topik ini.

Gejala

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

Pesan Error

Anda mungkin melihat error 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 error ini:

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

Kemungkinan Penyebab

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

Penyebab: Target Lambat

Diagnosis

Anda dapat mendiagnosis masalah target yang 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 dapat Anda lihat pada contoh di atas, Permintaan Target melebihi 55 detik, yang merupakan batas waktu tunggu target default. Batas waktu dapat dikonfigurasi, dan jika Anda telah mengubah waktu tunggu, durasi Permintaan Target akan cocok dengan waktu tunggu yang Anda tetapkan. Misalnya, jika waktu tunggu Anda adalah 10 detik, dalam skenario tersebut, permintaan target akan habis waktunya setelah 10 detik. Perilaku "target lambat" tersebut adalah petunjuk yang jelas bahwa target tidak merespons permintaan tepat waktu.

Resolusi

Apigee merekomendasikan agar Anda menghindari penggunaan target lambat. Misalnya, jika latensi target normal adalah 50 md, dan Anda mengalami latensi 55.000 md, Anda mungkin perlu menyelidiki apakah 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 elemen <HTTPTargetConnection> dan tentukan 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>

    Dalam contoh di atas, waktu tunggu ditingkatkan menjadi 120 detik. Perhatikan bahwa 300 detik adalah batas maksimum. Untuk informasi lebih lanjut, lihat Referensi properti endpoint.

  5. Simpan revisi baru dan deploy proxy.

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

Penyebab: Masalah konektivitas TargetServer

Diagnosis

Apigee tidak mengungkapkan penyebab pasti masalah konektivitas saat Anda mengonfigurasi properti endpoint <LoadBalancer>. Namun, Anda mungkin dapat menyimpulkan penyebab masalah konektivitas dari waktu yang berlalu dari Permintaan Target. Sebagai metode proses debug, 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.

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

Resolusi

Jika masalahnya dikonfirmasi sebagai waktu tunggu koneksi habis, lihat Error Layanan Tidak Tersedia 503 Peering VPC dengan TARGET_CONNECT_TIMEOUT.

Untuk masalah lain, hapus elemen <LoadBalancer> untuk men-debug dan menampilkan kode error yang tepat, lalu periksa kode di katalog error.

Harus Mengumpulkan Informasi Diagnostik

Jika masalah berlanjut meskipun setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Dukungan Google Cloud:

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