Waktu tunggu Gateway 504 - Waktu tunggu target baca 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 Kesalahan

Anda mungkin melihat error ini di API Monitoring, 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 pada 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. Pada sesi debug, kirim permintaan dan periksa output debug.

Seperti yang 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, maka dalam skenario tersebut, waktu tunggu permintaan target akan habis setelah 10 detik. Perilaku "target lambat" tersebut merupakan indikasi yang jelas bahwa target tidak merespons permintaan secara tepat waktu.

Resolusi

Apigee merekomendasikan agar Anda menghindari penggunaan target lambat. Misalnya, jika latensi target normal adalah 50 md, dan Anda mengalami latensi sebesar 55.000 md, Anda mungkin perlu menyelidiki apakah ada masalah pada target tersebut.

Jika Anda harus menambah 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 pada 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>

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

  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 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 langsung di proxy.

Untuk mendiagnosis masalah, gunakan Alat Debug.

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

Pada contoh di atas, perlu waktu sembilan detik agar waktu tunggu habis. Karena durasinya bukan 55 detik, Anda tahu penyebab error ini bukanlah batas waktu tunggu terlampaui karena target yang lambat. Secara default, Apigee mencoba kembali koneksi dua kali lagi jika elemen <LoadBalancer> digunakan pada 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 berasumsi bahwa masalah tersebut adalah masalah konektivitas.

Resolusi

Jika masalah dikonfirmasi sebagai waktu tunggu koneksi, lihat error Peering VPC 503 Layanan Tidak Tersedia dengan TARGET_CONNECT_TIMEOUT.

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

Harus Mengumpulkan Informasi Diagnostik

Jika masalah terus berlanjut bahkan 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 lingkungannya.
  3. Jangka waktu masalah.
  4. Frekuensi masalah
  5. Nama host target.
  6. Sesi debug dengan masalah.