Anda sedang melihat dokumentasi Apigee Edge.
  Buka
     Dokumentasi Apigee X. info
Gejala
Aplikasi klien mendapatkan kode status HTTP 502 dengan pesan
  Bad Gateway sebagai respons untuk panggilan API.
Kode status HTTP 502 berarti bahwa klien tidak menerima respons yang valid dari
  server backend yang harus benar-benar memenuhi permintaan.
Pesan error
Aplikasi klien mendapatkan kode respons berikut:
HTTP/1.1 502 Bad Gateway
Selain itu, Anda mungkin melihat pesan error berikut:
{
   "fault": {
      "faultstring": "Unexpected EOF at target",
      "detail": {
           "errorcode": "messaging.adaptors.http.UnexpectedEOFAtTarget"
       }
    }
}Kemungkinan penyebab
Salah satu penyebab umum untuk 502 Bad Gateway Error adalah Unexpected EOF
  error, yang dapat disebabkan oleh alasan berikut:
| Penyebab | Detail | Langkah-langkah yang diberikan untuk | 
|---|---|---|
| Server target salah dikonfigurasi | Server target tidak dikonfigurasi dengan benar untuk mendukung koneksi TLS/SSL. | Pengguna Edge Public dan Private Cloud | 
| EOFException dari Server Backend | Server backend mungkin mengirim EOF secara tiba-tiba. | Khusus pengguna Edge Private Cloud | 
| Waktu tunggu keep alive tidak dikonfigurasi dengan benar | Pertahankan waktu tunggu aktif yang tidak dikonfigurasi dengan benar di Apigee dan server backend. | Pengguna Edge Public dan Private Cloud | 
Langkah-langkah diagnosis umum
Untuk mendiagnosis error, Anda dapat menggunakan salah satu metode berikut:
Pemantauan API
Untuk mendiagnosis error menggunakan Pemantauan API:
    Dengan Pemantauan API, Anda dapat menyelidiki
    error 502, dengan mengikuti langkah-langkah seperti yang dijelaskan dalam
    Menyelidiki masalah. Definisinya yaitu:
  
- Buka dasbor Investigasi.
- Pilih Kode Status  di menu drop-down dan pastikan waktu yang tepat
        periode dipilih saat terjadi kesalahan 502.
- Klik kotak dalam matriks saat Anda melihat banyak error 502.
- Di sisi kanan, klik View Logs untuk error 502yang akan akan terlihat seperti berikut:
- Sumber Kesalahan adalah target
- Kode Kesalahan adalah messaging.adaptors.http.UnexpectedEOFAtTarget

Di sini kita dapat melihat informasi berikut:
Hal ini menunjukkan bahwa error 502 disebabkan oleh target karena EOF yang tidak terduga.
Selain itu, catat Request Message ID untuk error 502 guna mengetahui
      penyelidikan.
Alat rekaman aktivitas
Untuk mendiagnosis error menggunakan alat Trace:
- Aktifkan 
      sesi rekaman aktivitas, dan melakukan panggilan API untuk mereproduksi masalah 502 Bad Gateway.
- Pilih salah satu permintaan yang gagal dan periksa rekaman aktivitasnya.
- Menavigasi berbagai fase pelacakan dan menemukan tempat terjadinya kegagalan.
- 
      Anda akan melihat kegagalan setelah permintaan dikirim ke server target seperti yang ditunjukkan di bawah ini:   
- 
      Tentukan nilai X-Apigee.fault-source dan X-Apigee.fault-code dalam AX (Data Analytics Dicatat) Fase dalam rekaman aktivitas. Jika nilai X-Apigee.fault-source dan X-Apigee.fault-code cocok dengan nilai yang ditampilkan dalam tabel berikut, Anda dapat mengonfirmasi bahwa {i>error <i} 502yang berasal dari server target:Header respons Nilai X-Apigee.fault-source targetKode kesalahan.X-Apigee messaging.adaptors.http.flow.UnexpectedEOFAtTargetSelain itu, catat X-Apigee.Message-IDuntuk error502untuk penyelidikan lebih lanjut.
Log akses NGINX
Untuk mendiagnosis error menggunakan NGINX:
    Anda juga dapat melihat log akses NGINX untuk menentukan penyebab status 502
    pada kode sumber. Hal ini sangat berguna jika masalahnya pernah terjadi di masa lalu atau jika masalahnya
    terputus-putus dan Anda tidak dapat menangkap rekaman aktivitas di UI. Gunakan langkah-langkah berikut untuk
    menentukan informasi ini dari log akses NGINX:
  
- Periksa log akses NGINX.
 /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Menelusuri error 502untuk proxy API tertentu selama durasi tertentu (jika masalah terjadi di masa lalu) atau untuk permintaan yang masih gagal dengan502.
- Jika ada error 502, periksa apakah error tersebut disebabkan oleh target mengirimUnexpected EOF. Jika nilai X-Apigee.fault-source dan X- Apigee.fault-code cocok dengan nilai yang ditampilkan pada tabel di bawah, error502adalah yang disebabkan oleh target menutup koneksi secara tidak terduga:Header Respons Nilai X-Apigee.fault-source targetKode kesalahan.X-Apigee messaging.adaptors.http.flow.UnexpectedEOFAtTargetBerikut ini contoh entri yang menunjukkan error 502yang disebabkan oleh server target: 
Selain itu, catat ID pesan untuk error 502 guna penyelidikan lebih lanjut.
Penyebab: Server target salah dikonfigurasi
Server target tidak dikonfigurasi dengan benar untuk mendukung koneksi TLS/SSL.
Diagnosis
- Gunakan Pemantauan API, alat Trace, atau
      Log akses NGINX untuk menentukan ID pesan,
      kode kesalahan, dan sumber kesalahan 
untuk error 502.
- Aktifkan rekaman aktivitas di UI untuk API yang terpengaruh.
- Jika rekaman aktivitas permintaan API yang gagal menampilkan hal berikut:
      - Error 502 Bad Gatewayterlihat segera setelah permintaan alur target dimulai.
- error.classmenampilkan- messaging.adaptors.http.UnexpectedEOF.- Kemungkinan besar masalah ini disebabkan oleh server target yang salah konfigurasi Anda. 
 
- Error 
- Dapatkan definisi server target menggunakan panggilan API pengelolaan Edge:
      - Jika Anda adalah pengguna Cloud Publik, gunakan API ini:
          curl -v https://api.enterprise.apigee.com/v1/organizations/<orgname>/environments/<envname>/targetservers/<targetservername> -u <username> 
- Jika Anda adalah pengguna Private Cloud, gunakan API ini:
          curl -v http://<management-server-host>:<port #>/v1/organizations/<orgname>/environments/<envname>/targetservers/<targetservername> -u <username> Contoh definisi TargetServeryang salah:<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> </TargetServer > 
 
- Jika Anda adalah pengguna Cloud Publik, gunakan API ini:
          
- 
      Gambaran definisi TargetServeradalah contoh untuk salah satu definisi kesalahan konfigurasi yang dijelaskan sebagai berikut:Anggaplah server target mocktarget.apigee.nettelah dikonfigurasi untuk menerima koneksi aman (HTTPS) pada port443. Namun, jika Anda melihat definisi server target, tidak ada atribut/tanda lain yang menunjukkan bahwa yang ditujukan untuk koneksi aman. Hal ini menyebabkan Edge memperlakukan permintaan API yang menuju ke server target tertentu sebagai permintaan HTTP (tidak aman). Jadi Edge tidak akan memulai proses berjabatan SSL dengan server target.Karena server target dikonfigurasi untuk hanya menerima permintaan HTTPS (SSL) di 443, server tersebut akan menolak permintaan dari Edge atau menutup koneksi. Hasilnya, Anda mendapatkan ErrorUnexpectedEOFAtTargetpada Pemroses Pesan. Pemroses Pesan akan mengirim502 Bad Gatewaysebagai respons terhadap klien.
Resolusi
Selalu pastikan bahwa server target dikonfigurasi dengan benar sesuai dengan kebutuhan Anda.
Untuk contoh ilustrasi di atas, jika Anda ingin membuat permintaan ke target (HTTPS/SSL) yang aman
  server, Anda harus menyertakan atribut SSLInfo dengan tanda enabled yang disetel
  ke true. Meskipun diizinkan untuk menambahkan atribut SSLInfo untuk server target di target
  definisi endpoint itu sendiri, sebaiknya tambahkan atribut SSLInfo sebagai bagian dari target
  definisi server untuk 
menghindari kebingungan.
- Jika layanan backend memerlukan komunikasi SSL satu arah, maka:
      - Anda harus mengaktifkan TLS/SSL di definisi TargetServerdengan menyertakanSSLInfotempat tandaenabledditetapkan ke benar (true) seperti yang ditunjukkan di bawah ini:<TargetServer name="mocktarget"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
- Jika Anda ingin memvalidasi sertifikat 
server target di Edge, kita juga perlu
        sertakan truststore (berisi sertifikat server target) seperti yang ditunjukkan di bawah:
          <TargetServer name="mocktarget"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Ciphers/> <ClientAuthEnabled>false</ClientAuthEnabled> <Enabled>true</Enabled> <IgnoreValidationErrors>false</IgnoreValidationErrors> <Protocols/> <TrustStore>mocktarget-truststore</TrustStore> </SSLInfo> </TargetServer>
 
- Anda harus mengaktifkan TLS/SSL di definisi 
- Jika layanan backend memerlukan komunikasi SSL dua arah, maka:
      - Anda harus memiliki atribut SSLInfodenganClientAuthEnabled,Keystore,KeyAlias, dan TandaTruststoredisetel dengan benar, seperti yang ditunjukkan di bawah ini:<TargetServer name="mocktarget"> <IsEnabled>true</IsEnabled> <Host>www.example.com</Host> <Port>443</Port> <SSLInfo> <Ciphers/> <ClientAuthEnabled>true</ClientAuthEnabled> <Enabled>true</Enabled> <IgnoreValidationErrors>false</IgnoreValidationErrors> <KeyAlias>keystore-alias</KeyAlias> <KeyStore>keystore-name</KeyStore> <Protocols/> <TrustStore>truststore-name</TrustStore> </SSLInfo> </TargetServer >
 
- Anda harus memiliki atribut 
Referensi
Load balancing di seluruh server backend
Penyebab: EOFException dari server backend
Server backend dapat mengirim EOF (End of File) secara tiba-tiba.
Diagnosis
- Gunakan Pemantauan API, alat Trace, atau
      Log akses NGINX untuk menentukan ID pesan,
      kode kesalahan, dan sumber kesalahan 
untuk error 502.
- Memeriksa log Pemroses Pesan
    (/opt/apigee/var/log/edge-message-processor/logs/system.log) dan telusuri untuk mengetahui apakah Anda memilikieof unexpecteduntuk API tertentu atau jika Anda memilikimessageidunik untuk API maka Anda dapat mencarinya.Contoh stack trace pengecualian dari log Pemroses Pesan "message": "org:myorg env:test api:api-v1 rev:10 messageid:rrt-1-14707-63403485-19 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context$3.onException() : SSLClientChannel[C:193.35.250.192:8443 Remote host:0.0.0.0:50100]@459069 useCount=6 bytesRead=0 bytesWritten=755 age=40107ms lastIO=12832ms .onExceptionRead exception: {} java.io.EOFException: eof unexpected at com.apigee.nio.channels.PatternInputChannel.doRead(PatternInputChannel.java:45) ~[nio-1.0.0.jar:na] at com.apigee.nio.channels.InputChannel.read(InputChannel.java:103) ~[nio-1.0.0.jar:na] at com.apigee.protocol.http.io.MessageReader.onRead(MessageReader.java:79) ~[http-1.0.0.jar:na] at com.apigee.nio.channels.DefaultNIOSupport$DefaultIOChannelHandler.onIO(NIOSupport.java:51) [nio-1.0.0.jar:na] at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:123) [nio-1.0.0.jar:na]" Pada contoh di atas, Anda dapat melihat bahwa error java.io.EOFException: eof unexpectedterjadi saat Pemroses Pesan mencoba membaca respons dari server backend. Pengecualian ini menunjukkan akhir {i>file<i} (EOF), atau akhir {i>stream<i} memiliki tercapai secara tidak terduga.Artinya, Pemroses Pesan mengirim permintaan API ke server backend dan sedang menunggu atau membaca responsnya. Namun, server backend menghentikan koneksi secara tiba-tiba sebelum Pemroses Pesan mendapat respons atau dapat membaca respons lengkap. 
- Periksa log server backend Anda dan lihat apakah ada error atau informasi yang dapat menyebabkan server {i>backend<i} menghentikan koneksi secara tiba-tiba. Jika Anda menemukan error/informasi, lalu buka Resolusi dan perbaiki masalah dengan tepat di server backend Anda.
- Jika Anda tidak menemukan error atau informasi apa pun di server backend, kumpulkan output tcpdumpdi Pemroses Pesan:- Jika host server backend Anda memiliki satu alamat IP, gunakan perintah berikut:
          tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME 
- Jika host server backend Anda memiliki beberapa alamat IP, gunakan perintah berikut:
          tcpdump -i any -s 0 host HOSTNAME -w FILE_NAME Biasanya, kesalahan ini disebabkan karena server backend merespons kembali dengan [FIN,ACK]segera setelah Pemroses Pesan mengirimkan permintaan ke server backend.
 
- Jika host server backend Anda memiliki satu alamat IP, gunakan perintah berikut:
          
- 
    Perhatikan contoh tcpdumpberikut.Contoh tcpdumpdiambil saat502 Bad Gateway Error(UnexpectedEOFAtTarget) terjadi 
- Dari output TCPDump, Anda akan melihat urutan peristiwa berikut:
      - Dalam paket 985, Pemroses Pesan mengirimkan permintaan API ke server backend.
- Dalam paket 986, server backend segera merespons kembali dengan[FIN,ACK].
- Dalam paket 987, Pemroses Pesan merespons dengan[FIN,ACK]ke backend server tertentu.
- Pada akhirnya, koneksi ditutup dengan [ACK]dan[RST]dari kedua sisi.
- Anda akan mendapatkan pengecualian karena server backend mengirim [FIN,ACK]Pengecualianjava.io.EOFException: eof unexpectedpada Pesan Pemroses.
 
- Dalam paket 
- Hal ini dapat terjadi jika ada masalah jaringan di server backend. Bangun interaksi dengan jaringan Anda tim operasional untuk menyelidiki masalah ini lebih lanjut.
Resolusi
Perbaiki masalah di server backend dengan tepat.
Jika masalah berlanjut dan Anda memerlukan bantuan pemecahan masalah 502 Bad Gateway Error
  menduga bahwa ini adalah masalah pada Edge, hubungi Dukungan Apigee Edge.
Penyebab: Waktu tunggu tetap aktif tidak dikonfigurasi dengan benar
    Sebelum Anda mendiagnosis apakah ini merupakan penyebab error 502, baca seluruh
    konsep berikut.
  
Koneksi persisten di Apigee
Apigee secara default (dan selanjutnya dengan standar HTTP/1.1) menggunakan koneksi persisten
  saat berkomunikasi dengan
server backend target. Koneksi persisten dapat meningkatkan performa
  dengan mengizinkan koneksi TCP dan (jika berlaku) TLS/SSL yang telah digunakan untuk digunakan kembali,
  mengurangi overhead latensi. Durasi koneksi yang perlu dipertahankan dikontrol
  melalui properti waktu tunggu keep alive (keepalive.timeout.millis).
Baik server backend maupun Pemroses Pesan Apigee menggunakan waktu tunggu tetap aktif untuk menjaga koneksi terbuka satu sama lain. Setelah tidak ada data yang diterima dalam waktu tunggu keep alive durasi, server backend atau Pemroses Pesan dapat menutup koneksi dengan yang lain.
Proxy API yang di-deploy ke Pemroses Pesan di Apigee, secara default, memiliki waktu tunggu tetap aktif ke
  60s kecuali jika diganti. Setelah tidak ada data yang diterima untuk 60s, Apigee akan
  menutup koneksi dengan server backend. Server backend juga akan mempertahankan 
waktu tunggu yang tetap aktif,
  dan setelah ini berakhir, server backend akan menutup 
koneksi dengan Pemroses Pesan.
Implikasi konfigurasi waktu tunggu keep alive yang salah
    Jika Apigee atau server backend dikonfigurasi dengan waktu tunggu keep alive yang salah,
    menghasilkan kondisi race yang menyebabkan server backend mengirim End Of File
    (FIN) tidak terduga sebagai respons terhadap permintaan resource.
  
    Misalnya, jika waktu tunggu keep alive dikonfigurasi dalam Proxy API atau
    Pemroses dengan nilai lebih besar dari atau sama dengan waktu tunggu server backend upstream, lalu
    kondisi race berikut
dapat terjadi. Artinya, jika Pemroses Pesan tidak menerima
    data hingga mendekati ambang batas server backend, membuat waktu tunggu tetap aktif, lalu permintaan
    datang dan dikirim ke server {i>
backend <i}menggunakan koneksi yang ada. Hal ini dapat menyebabkan
    502 Bad Gateway karena error EOF yang tidak terduga seperti yang dijelaskan di bawah:
  
- Misalkan waktu tunggu tetap aktif disetel pada Pemroses Pesan dan server backend adalah 60 detik dan tidak ada yang baru datang hingga 59 detik setelah permintaan sebelumnya dilayani oleh Pemroses Pesan.
- Pemroses Pesan melanjutkan dan memproses permintaan yang masuk pada detik ke-59 menggunakan koneksi yang ada (karena waktu tunggu keep alive belum berlalu) dan mengirimkan permintaan ke server backend.
- Namun, sebelum permintaan tiba di server backend, waktu tunggu keep alive batas tersebut telah terlampaui di server backend.
- Permintaan Pemroses Pesan untuk resource sedang berlangsung, tetapi server backend
        mencoba menutup koneksi dengan mengirimkan paket FINke Pesan Pemroses.
- Sementara Pemroses Pesan menunggu data diterima, Pemroses menerima
        FINyang tidak terduga, dan koneksinya dihentikan.
- Hal ini menghasilkan Unexpected EOF, lalu502akan yang ditampilkan ke klien oleh Pemroses Pesan.
  Dalam kasus ini, kita mengamati bahwa error 502 terjadi karena waktu tunggu keep alive yang sama
  60 detik telah dikonfigurasi 
di Pemroses Pesan dan server backend. Demikian pula,
  masalah ini juga dapat terjadi jika nilai yang lebih tinggi dikonfigurasi untuk waktu tunggu tetap aktif di Pesan
  Prosesor daripada di server backend.
Diagnosis
- Jika Anda adalah pengguna Cloud Publik:
      - Menggunakan alat Monitoring atau Trace API (seperti yang dijelaskan dalam
          Langkah-langkah diagnosis umum) dan pastikan Anda memiliki kedua hal berikut
          pengaturan:
          - Kode error: messaging.adaptors.http.flow.UnexpectedEOFAtTarget
- Sumber error: target
 
- Kode error: 
- Buka Menggunakan tcpdump untuk penyelidikan lebih lanjut.
 
- Menggunakan alat Monitoring atau Trace API (seperti yang dijelaskan dalam
          Langkah-langkah diagnosis umum) dan pastikan Anda memiliki kedua hal berikut
          pengaturan:
          
- Jika Anda adalah pengguna Private Cloud:
      - Gunakan alat Trace atau
          Log akses NGINX untuk menentukan ID pesan,
          kode kesalahan, dan sumber kesalahan untuk error 502.
- Menelusuri ID pesan di log Pemroses Pesan
          
 (/opt/apigee/var/log/edge-message-processor/logs/system.log).
- Anda akan melihat java.io.EOFEXception: eof unexpectedseperti yang ditunjukkan di bawah ini:2020-11-22 14:42:39,917 org:myorg env:prod api:myproxy rev:1 messageid:myorg-opdk-dc1-node2-17812-56001-1 NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context$3.onException() : ClientChannel[Connected: Remote:51.254.225.9:80 Local:10.154.0.61:35326]@12972 useCount=7 bytesRead=0 bytesWritten=159 age=7872ms lastIO=479ms isOpen=true.onExceptionRead exception: {} java.io.EOFException: eof unexpected at com.apigee.nio.channels.PatternInputChannel.doRead(PatternInputChannel.java:45) at com.apigee.nio.channels.InputChannel.read(InputChannel.java:103) at com.apigee.protocol.http.io.MessageReader.onRead(MessageReader.java:80) at com.apigee.nio.channels.DefaultNIOSupport$DefaultIOChannelHandler.onIO(NIOSupport.java:51) at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:220) 
- Error java.io.EOFException: eof unexpectedmenunjukkan bahwa Pemroses Pesan menerimaEOFsaat masih menunggu untuk membaca respons dari server backend.
- Atribut useCount=7dalam pesan error di atas menunjukkan bahwa Pemroses Pesan telah menggunakan kembali koneksi ini sekitar tujuh kali dan atributbytesWritten=159menunjukkan bahwa Pemroses Pesan telah mengirim permintaan payload159byte ke server backend. Namun, server tersebut menerima nol byte saatEOFyang tidak terduga terjadi.
- 
          Ini menunjukkan bahwa {i>Message Processor<i} telah menggunakan koneksi yang sama beberapa kali, dan pada kesempatan ini mengirim data, tetapi tidak lama kemudian menerima EOFsebelum data apa pun diterima. Ini berarti ada probabilitas tinggi bahwa backend waktu tunggu keep-alive server lebih pendek atau sama dengan yang disetel di proxy API.Anda dapat menyelidiki lebih lanjut dengan bantuan tcpdumpseperti yang dijelaskan di bawah.
 
- Gunakan alat Trace atau
          Log akses NGINX untuk menentukan ID pesan,
          kode kesalahan, dan sumber kesalahan untuk error 
Menggunakan tcpdump
- Ambil tcpdumpdi server backend dengan perintah berikut:tcpdump -i any -s 0 host MP_IP_Address -w File_Name 
- Menganalisis tcpdumpyang diambil:Berikut adalah contoh output tcpdump:  Dalam contoh tcpdumpdi atas, Anda dapat melihat hal berikut:- Dalam paket 5992,, server backend menerima permintaanGET.
- Dalam paket 6064, respons ini direspons dengan200 OK.
- Dalam paket 6084, server backend menerima permintaanGETlainnya.
- Dalam paket 6154, kode ini merespons dengan200 OK.
- Dalam paket 6228, server backend menerima permintaanGETketiga.
- Kali ini, server backend menampilkan FIN, ACKke Pemroses Pesan (paket6285) yang memulai penutupan koneksi.
 Koneksi yang sama berhasil digunakan kembali dua kali dengan sukses, tetapi pada permintaan ketiga, server backend memulai penutupan koneksi, sementara Pemroses Pesan menunggu data dari server backend. Ini menunjukkan bahwa server backend menyimpan waktu tunggu aktif kemungkinan besar lebih pendek atau sama dengan nilai yang disetel di proxy API. Untuk memvalidasi ini, lihat Membandingkan waktu tunggu keep alive di Apigee dan server backend. 
- Dalam paket 
Membandingkan waktu tunggu keep alive di Apigee dan server backend
- Secara default, Apigee menggunakan nilai 60 detik untuk properti waktu tunggu keep alive.
- 
      Namun, Anda mungkin telah mengganti nilai default di Proxy API. Anda dapat memverifikasinya dengan memeriksa definisi TargetEndpointspesifik di Proxy API gagal yang memberikan error502.Contoh konfigurasi TargetEndpoint: <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>https://mocktarget.apigee.net/json</URL> <Properties> <Property name="keepalive.timeout.millis">30000</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>Dalam contoh di atas, properti waktu tunggu keep alive diganti dengan nilai 30 detik ( 30000milidetik).
- Selanjutnya, periksa properti waktu tunggu tetap aktif yang dikonfigurasi di server backend Anda. Katakanlah
      server backend Anda dikonfigurasi dengan nilai 25 seconds.
- Jika Anda menentukan bahwa nilai properti waktu tunggu keep alive di Apigee lebih tinggi
      daripada nilai properti waktu tunggu keep alive di server backend seperti di atas
      contoh, maka itulah penyebab error 502.
Resolusi
Pastikan properti waktu tunggu keep alive selalu lebih rendah di Apigee (di Proxy API dan Pemroses Pesan) dibandingkan dengan yang ada di server backend.
- Tentukan nilai yang ditetapkan untuk waktu tunggu keep alive di server backend.
- Mengonfigurasi nilai yang sesuai untuk properti waktu tunggu tetap aktif di Proxy API atau Pemroses Pesan, sehingga properti waktu tunggu tetap aktif lebih rendah dari nilai yang ditetapkan pada server backend, menggunakan langkah-langkah yang dijelaskan dalam Mengonfigurasi waktu tunggu tetap aktif di Pemroses Pesan.
Jika masalah masih berlanjut, buka Harus mengumpulkan informasi diagnostik.
Praktik Terbaik
    Sangat disarankan bahwa komponen downstream selalu memiliki waktu tunggu keep alive yang lebih rendah
    daripada yang dikonfigurasi di server hulu 
untuk menghindari kondisi race semacam ini dan
    502 error. Setiap hop downstream harus lebih rendah dari setiap hop upstream. Di Apigee
    Edge, sebaiknya gunakan panduan berikut:
  
- Waktu tunggu tetap aktif klien harus kurang dari waktu tunggu keep alive Router Edge.
- Waktu tunggu tetap aktif Router Edge harus kurang dari waktu tunggu tetap aktif Pemroses Pesan.
- Waktu tunggu tetap aktif Pemroses Pesan harus kurang dari waktu tunggu tetap aktif server target.
- Jika Anda memiliki hop lain di depan atau di belakang Apigee, aturan yang sama harus diterapkan. Anda harus selalu membiarkannya sebagai tanggung jawab klien downstream untuk menutup dengan upstream.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti instruksi di atas, kumpulkan informasi diagnostik, lalu hubungi Dukungan Apigee Edge.
Jika Anda adalah pengguna Cloud Publik, berikan informasi berikut:
- Nama organisasi
- Nama lingkungan
- Nama Proxy API
- Selesaikan perintah curluntuk mereproduksi error502
- File rekaman aktivitas yang berisi permintaan dengan 502 Bad Gateway - Unexpected EOFerror
- Jika error 502tidak terjadi saat ini, berikan jangka waktu dengan informasi zona waktu saat terjadi error502di masa lalu.
Jika Anda adalah pengguna Private Cloud, berikan informasi berikut:
- Pesan error lengkap yang diamati untuk permintaan yang gagal
- Nama Proxy Organisasi, Lingkungan, dan Nama Proxy API yang Anda amati
        502error
- Paket Proxy API
- File rekaman aktivitas yang berisi permintaan dengan 502 Bad Gateway - Unexpected EOFerror
- 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
- Jangka waktu dengan informasi zona waktu saat terjadi error 502
- Tcpdumpsyang dikumpulkan di Pemroses Pesan atau server backend, atau keduanya saat error terjadi