502 Hatalı Ağ Geçidi Beklenmeyen EOF

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

İstemci uygulaması şu mesajla birlikte 502 HTTP durum kodunu alır: API çağrılarına yanıt olarak Bad Gateway.

HTTP durum kodu 502, istemcinin arka uç sunucularının kontrol edilmesi gerekir.

Hata mesajları

İstemci uygulaması aşağıdaki yanıt kodunu alır:

HTTP/1.1 502 Bad Gateway

Ayrıca, aşağıdaki hata mesajını da görebilirsiniz:

{
   "fault": {
      "faultstring": "Unexpected EOF at target",
      "detail": {
           "errorcode": "messaging.adaptors.http.UnexpectedEOFAtTarget"
       }
    }
}

Olası nedenler

502 Bad Gateway Error için tipik nedenlerden biri Unexpected EOF hatası oluşur. Bu durum aşağıdaki nedenlerden kaynaklanabilir:

Neden Ayrıntılar Şunun için verilen adımlar:
Hedef sunucu yanlış yapılandırılmış Hedef sunucu, TLS/SSL bağlantılarını destekleyecek şekilde düzgün yapılandırılmamış. Edge Herkese Açık ve Private Cloud kullanıcıları
Arka Uç Sunucudan EOFİstisna Arka uç sunucusu aniden EOF gönderebilir. Yalnızca Edge Private Cloud kullanıcıları
Canlı tutma zaman aşımı yanlış yapılandırılmış Apigee ve arka uç sunucusunda yanlış yapılandırılmış canlı zaman aşımlarını koruyun. Edge Herkese Açık ve Private Cloud kullanıcıları

Sık kullanılan teşhis adımları

Hatayı teşhis etmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:

API Monitoring

API Monitoring'i kullanarak hatayı teşhis etmek için:

API Monitoring'i kullanarak aşağıdakileri inceleyebilirsiniz: 502 hatalarını gidermek için şu adımları uygulayın: Sorunları inceleyin. Yani:

  1. İncele kontrol paneline gidin.
  2. Açılır menüden Durum Kodu 'nu seçin ve doğru zamanın seçildiğinden emin olun. 502 hata gerçekleştiğinde dönemi seçilir.
  3. Çok sayıda 502 hatası görüyorsanız matristeki kutuyu tıklayın.
  4. Sağ tarafta bulunan 502 hataları için Günlükleri Görüntüle'yi tıklayın. aşağıdaki gibi görünür:
  5. Burada aşağıdaki bilgileri görebiliriz:

    • Hata Kaynağı: target
    • Hata Kodu: messaging.adaptors.http.UnexpectedEOFAtTarget

Bu, 502 hatasının, beklenmeyen EOF nedeniyle hedeften kaynaklandığını gösterir.

Ayrıca, daha ayrıntılı bilgi için 502 hatasıyla ilgili Request Message ID not edin soruşturma.

İzleme aracı

İzleme aracını kullanarak hatayı teşhis etmek için:

  1. oturumu izleyin ve 502 Bad Gateway sorununu yeniden oluşturmak için API çağrısı yapın.
  2. Başarısız isteklerden birini seçin ve izini inceleyin.
  3. İzlemenin çeşitli aşamaları arasında gezinin ve hatanın nerede oluştuğunu bulun.
  4. İstek hedef sunucuya gönderildikten sonra aşağıdaki gibi hata mesajını görürsünüz:

    alt_text

    alt_text

  5. X-Apigee.fault-source ve X-Apigee.fault-code değerini İzdeki AX (Kayıtlı Analiz Verileri) aşama.

    X-Apigee.fault-source ve X-Apigee.fault-code değerleri aşağıdaki tabloda gösterilen değerlere benzer şekilde, 502 hatasının Hedef sunucudan geliyor:

    Yanıt başlıkları Değer
    X-Apigee.fault-source target
    X-Apigee.fault-code messaging.adaptors.http.flow.UnexpectedEOFAtTarget

    Ayrıca, 502 hatası için X-Apigee.Message-ID ile ilgili not alın bakın.

NGINX erişim günlükleri

NGINX kullanarak hatayı teşhis etmek için:

502 durumunun nedenini belirlemek için NGINX erişim günlüklerine de bakabilirsiniz girin. Bu, özellikle sorun geçmişte meydana geldiyse veya sorun oluyor ve kullanıcı arayüzünde izini yakalayamıyorsunuz. Aşağıdaki adımları uygulayarak bu bilgileri NGINX erişim günlüklerinden belirler:

  1. NGINX erişim günlüklerini kontrol edin.
    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
  2. Belirli bir süre boyunca belirli API proxy'si için 502 hatalarını arayın (sorun geçmişte oluşmuşsa) veya 502 ile hâlâ başarısız olan istekler için.
  3. Herhangi bir 502 hatası varsa hatanın hedeften kaynaklanıp kaynaklanmadığını kontrol edin Unexpected EOF gönderiliyor. X-Apigee.fault-source ve X- Apigee.fault-code aşağıdaki tabloda gösterilen değerlerle eşleşir. 502 hatası Bağlantının beklenmedik bir şekilde kapatılmasından kaynaklanmaktadır:
    Yanıt Başlıkları Değer
    X-Apigee.fault-source target
    X-Apigee.fault-code messaging.adaptors.http.flow.UnexpectedEOFAtTarget

    Aşağıda, hedef sunucunun neden olduğu 502 hatasını gösteren örnek bir giriş verilmiştir:

Ayrıca, daha ayrıntılı inceleme için 502 hatalarının ileti kimliklerini not edin.

Neden: Yanlış yapılandırılmış hedef sunucu

Hedef sunucu, TLS/SSL bağlantılarını destekleyecek şekilde düzgün yapılandırılmamış.

Teşhis

  1. API İzleme, İzleme aracını veya İleti kimliğini belirlemek için NGINX erişim günlükleri 502 hatasının hata kodu ve kaynak kaynağı.
  2. Etkilenen API için kullanıcı arayüzünde izlemeyi etkinleştirin.
  3. Başarısız API isteğinin izleme bölümünde aşağıdakiler gösteriliyorsa:
    1. 502 Bad Gateway hatası, hedef akış isteği başlar başlamaz görünür.
    2. error.class, messaging.adaptors.http.UnexpectedEOF. görüntüler

      Öyleyse bu sorun büyük olasılıkla yanlış hedef sunucudan kaynaklanmaktadır yapılandırma.

  4. Edge management API çağrısını kullanarak hedef sunucu tanımını alın:
    1. Herkese açık Cloud kullanıcısıysanız şu API'yi kullanın:
      curl -v https://api.enterprise.apigee.com/v1/organizations/<orgname>/environments/<envname>/targetservers/<targetservername> -u <username>
      
    2. Private Cloud kullanıcısıysanız şu API'yi kullanın:
      curl -v http://<management-server-host>:<port #>/v1/organizations/<orgname>/environments/<envname>/targetservers/<targetservername> -u <username>
      

      Hatalı TargetServer tanımı örneği:

      <TargetServer  name="target1">
        <Host>mocktarget.apigee.net</Host>
        <Port>443</Port>
        <IsEnabled>true</IsEnabled>
      </TargetServer >
      
  5. Resimli TargetServer tanımı, tipik bir bakış açısının oluşan yanlış yapılandırmaları içerir:

    mocktarget.apigee.net hedef sunucusunun yapılandırıldığını varsayalım. 443 bağlantı noktasında güvenli (HTTPS) bağlantıları kabul etmek için. Ancak, belirten başka hiçbir ayrıntı/bayrak olmadığından, güvenli bağlantılar için tasarlanmıştır. Bu durum, Edge'in Belirli hedef sunucuyu HTTP (güvenli olmayan) istekler olarak ayarlar. Edge o yüzden Bu hedef sunucuyla SSL El Sıkışma işlemini başlatın.

    Hedef sunucu 443 ürününde yalnızca HTTPS (SSL) isteklerini kabul edecek şekilde yapılandırıldığından Edge'den gelen isteği reddedin veya bağlantıyı kapatın. Bunun sonucunda, İleti İşleyicide UnexpectedEOFAtTarget hatası. Mesaj İşleyen, 502 Bad Gateway olarak gönderin.

Çözünürlük

Hedef sunucunun her zaman gereksinimlerinize uygun şekilde yapılandırıldığından emin olun.

Yukarıdaki örnek için güvenli (HTTPS/SSL) bir hedefe istek yapmak sunucusu varsa, enabled işareti ayarlanmış SSLInfo özelliklerini eklemeniz gerekir. alıcı: true. Hedefe bir hedef sunucu için SSLInfo özelliklerinin eklenmesine izin verilir SSLInfo özelliklerini hedefin bir parçası olarak eklemeniz önerilir. sunucu tanımını kullanın.

  1. Arka uç hizmeti tek yönlü SSL iletişimi gerektiriyorsa:
    1. TargetServer tanımına, SSLInfo öğesini ekleyerek TLS/SSL'yi etkinleştirmeniz gerekir. enabled işaretinin doğru değerine ayarlandığı özellikler (aşağıda gösterildiği gibi):
      <TargetServer name="mocktarget">
        <Host>mocktarget.apigee.net</Host>
        <Port>443</Port>
        <IsEnabled>true</IsEnabled>
        <SSLInfo>
            <Enabled>true</Enabled>
        </SSLInfo>
      </TargetServer>
      
    2. Edge'de hedef sunucunun sertifikasını doğrulamak istiyorsanız ayrıca güven deposunu (hedef sunucunun sertifikasını içerir) aşağıda gösterildiği gibi ekleyin:
      <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>
      
      .
  2. Arka uç hizmeti iki yönlü SSL iletişimi gerektiriyorsa:
    1. ClientAuthEnabled ile SSLInfo özelliklerinizin olması gerekir. Keystore, KeyAlias ve Truststore işareti, aşağıda gösterildiği gibi uygun şekilde ayarlandı:
      <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 >
      

Referanslar

Yük dengeleme RACI matrisine

Neden: Arka uç sunucusundan EOFException

Arka uç sunucusu aniden EOF (Dosya Sonu) gönderebilir.

Teşhis

  1. API İzleme, İzleme aracını veya İleti kimliğini belirlemek için NGINX erişim günlükleri 502 hatasının hata kodu ve kaynak kaynağı.
  2. İleti İşleyici günlüklerini kontrol etme (/opt/apigee/var/log/edge-message-processor/logs/system.log) ve arama yaparak söz konusu API için eof unexpected varsa veya API için benzersiz messageid öğesine sahipseniz isteği aldıktan sonra arama yapabilirsiniz.

    İleti İşleyici günlüğündeki örnek istisna yığını izleme

    "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]"
    

    Yukarıdaki örnekte, İleti İşleyici gelen bir yanıtı okumaya çalışırken java.io.EOFException: eof unexpected hatasının oluştuğunu görebilirsiniz. arka uç sunucusuna gidin. Bu istisna, dosyanın sonunu (EOF) veya akışın sonunda beklenmedik bir şekilde ulaşıldı.

    Yani, Mesaj İşleyici API isteğini arka uç sunucusuna gönderdi ve veya yanıtı okuyabilirsiniz. Ancak arka uç sunucusu bağlantıyı aniden sonlandırdı. veya yanıtın tamamını okuyabilmelidir.

  3. Arka uç sunucu günlüklerinizi kontrol edin ve arka uç sunucusunun bağlantıyı aniden sonlandırmasına neden olduysa. Herhangi bir ardından Çözüm'e gidin ve arka uç sunucunuzda sorunu uygun şekilde düzeltin.
  4. Arka uç sunucunuzda hata veya bilgi yoksa Mesaj İşlemcilerinde tcpdump çıkışını toplayın:
    1. Arka uç sunucu ana makinenizin tek bir IP adresi varsa aşağıdaki komutu kullanın:
      tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
      
      .
    2. Arka uç sunucu ana makinenizde birden fazla IP adresi varsa aşağıdaki komutu kullanın:
      tcpdump -i any -s 0 host HOSTNAME -w FILE_NAME
      
      .

      Bu hata genellikle arka uç sunucusunun [FIN,ACK].

  5. Aşağıdaki tcpdump örneğini göz önünde bulundurun.

    502 Bad Gateway Error sırasında alınan örnek tcpdump (UnexpectedEOFAtTarget) gerçekleşme

  6. TCPDump çıkışında aşağıdaki etkinlik sırasını görürsünüz:
    1. 985 paketinde, Mesaj İşleyici API isteğini arka uç sunucusuna gönderir.
    2. 986 paketinde, arka uç sunucusu [FIN,ACK] ile hemen yanıt verir.
    3. 987 paketinde, Mesaj İşleyici arka uca [FIN,ACK] ile yanıt veriyor sunucu.
    4. Sonunda bağlantılar her iki taraftan da [ACK] ve [RST] ile kapatılır.
    5. Arka uç sunucusu [FIN,ACK] gönderdiği için Mesajda java.io.EOFException: eof unexpected istisna İşleyen.
  7. Bu durum, arka uç sunucusunda bir ağ sorunu varsa ortaya çıkabilir. Ağınızla etkileşim kurun ekibimizin sorunu daha ayrıntılı bir şekilde araştırması için.

Çözünürlük

Arka uç sunucusunda sorunu uygun şekilde düzeltin.

Sorun devam ederse ve sorun gidermeyle ilgili yardıma ihtiyacınız varsa 502 Bad Gateway Error Edge'de bir sorun olduğundan şüpheleniyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.

Neden: Canlı tutma zaman aşımı yanlış yapılandırılmış

502 hatalarının nedeninin bu olup olmadığını teşhis etmeden önce lütfen şunları okuyun: öğreneceğiz.

Apigee'de kalıcı bağlantılar

Apigee, varsayılan olarak (HTTP/1.1 standardına uygun olarak) kalıcı bağlantılar kullanır. hedef arka uç sunucusuyla iletişim kurduğunuzda emin olun. Kalıcı bağlantılar performansı artırabilir oluşturulmuş bir TCP ve (varsa) TLS/SSL bağlantısının yeniden kullanılmasına izin vererek ek gecikmeleri azaltır. Bir bağlantının sürdürülmesi gereken süre kontrol edilir Canlı tutma zaman aşımı (keepalive.timeout.millis) özelliği üzerinden ekleyebilirsiniz.

Hem arka uç sunucusu hem de Apigee Mesaj İşlemcisi, verileri korumak için birbirine bağlanır. Canlı tutma zaman aşımı süresi içinde hiçbir veri alınmadığında arka uç sunucusu veya Mesaj İşleyici, diğeriyle olan bağlantıyı kapatabilir.

Apigee'de bir Mesaj İşleyici'ye dağıtılan API Proxy'lerinde varsayılan olarak etkin tutma zaman aşımı şu şekilde ayarlanmıştır: Geçersiz kılınmadığı sürece 60s. 60s için hiçbir veri alınmadığında Apigee, arka uç sunucusuyla bağlantıyı kapatın. Arka uç sunucusu da bir alive zaman aşımı sağlar. Bu süre sona erdiğinde arka uç sunucusu İleti İşleyici ile olan bağlantıyı kapatacaktır.

Hatalı keep alive zaman aşımı yapılandırmasının sonuçları

Apigee veya arka uç sunucusu yanlış canlı tutma zaman aşımlarıyla yapılandırılmışsa arka uç sunucusunun kaynak isteğine yanıt olarak beklenmeyen bir End Of File (FIN) göndermesine neden olan bir yarış koşuluna yol açar.

Örneğin, canlı tutma zaman aşımı API Proxy'sinde veya Yukarı akış arka uç sunucusunun zaman aşımından büyük veya ona eşit bir değere sahip işlemci, aşağıdaki yarış koşulu oluşabilir. Yani İletiyi İşleyen, herhangi bir yanıt arka uç sunucusunun eşiğine çok yakına ulaşana kadar zaman aşımını devam ettirmek için bir istek alır. arka uç sunucusuna gönderilir. Bu da Aşağıda açıklanan Beklenmeyen EOF hatası nedeniyle 502 Bad Gateway:

  1. Hem İleti İşleyici hem de arka uç sunucusunda alive zaman aşımının ayarlandığını varsayalım 60 saniye olduğunu ve yeni bir değer olmadığını istek, önceki isteğin ilgili arama aracı tarafından sunulmasının üzerinden 59 saniye Mesaj İşleyici.
  2. Mesaj İşleyen, işleme 59. saniyede gelen isteği işler. mevcut bağlantıyı kullanarak (Keep alive zaman aşımı süresi henüz geçmediğinden) ve arka uç sunucusuna gönderilir.
  3. Ancak, istek arka uç sunucusuna gelmeden önce keep alive zaman aşımı arka uç sunucusunda eşik o zamandan beri aşılmıştır.
  4. Mesaj İşleyici'nin bir kaynak isteği devam ediyor, ancak arka uç sunucusu İletiye FIN paketi göndererek bağlantıyı kapatmaya çalışır İşleyen.
  5. İleti İşleyen, verilerin alınmasını beklerken beklenmedik FIN hatası oluşur ve bağlantı sonlandırılır.
  6. Bu, Unexpected EOF ve ardından 502 ile sonuçlanır İleti İşleyen tarafından istemciye geri gönderilir.

Bu örnekte, aynı keep alive zaman aşımı nedeniyle 502 hatasının oluştuğunu gözlemledik hem İleti İşleyici hem de arka uç sunucusunda 60 saniyelik bir değer yapılandırıldı. Aynı şekilde, Bu sorun, İleti sayfasında canlı tutma zaman aşımı için daha yüksek bir değer yapılandırılırsa da İşlemci, arka uç sunucusundan fazlaysa.

Teşhis

  1. Herkese açık Cloud kullanıcısıysanız:
    1. API Monitoring veya Trace aracını kullanın (bkz. Yaygın teşhis adımları) ve aşağıdakilerin her ikisine de sahip olduğunuzu doğrulayın Ayarlar:
      • Hata kodu: messaging.adaptors.http.flow.UnexpectedEOFAtTarget
      • Hata kaynağı: target
    2. Daha ayrıntılı inceleme için tcpdump kullanma bölümüne gidin.
  2. Private Cloud kullanıcısıysanız:
    1. İzleme aracını kullanın veya İleti kimliğini belirlemek için NGINX erişim günlükleri 502 hatası için hata kodu ve hata kaynağı.
    2. İleti İşleyen günlüğünde ileti kimliğini arayın
      (/opt/apigee/var/log/edge-message-processor/logs/system.log).
    3. java.io.EOFEXception: eof unexpected simgesi aşağıdaki gibi gösterilir:
      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)
      
    4. java.io.EOFException: eof unexpected hatası, İleti İşleyen, iletinin okunmasını beklerken bir EOF arka uç sunucusundan alınır.
    5. Yukarıdaki hata mesajında yer alan useCount=7 özelliği, Mesaj İşleyici bu bağlantıyı yaklaşık yedi kez tekrar kullanmıştır ve bytesWritten=159, İletiyi İşleyen'in isteği gönderdiğini belirtir arka uç sunucuya 159 bayt yükü. Ancak sıfır bayt aldı beklenmedik EOF gerçekleştiğinde geri döndü.
    6. Bu, İleti İşleyici'nin aynı bağlantıyı birden çok kez yeniden kullandığını gösterir. ve bu kez veri gönderdi ancak kısa bir süre sonra EOF aldı. kontrol edebilirsiniz. Bu, arka ucun sizin için büyük olasılıkla Sunucunun canlı tutma zaman aşımı süresi, API proxy'sinde ayarlanan zaman aralığından daha kısa veya bu değere eşit.

      Aşağıda açıklandığı şekilde tcpdump yardımıyla daha ayrıntılı inceleme yapabilirsiniz.

tcpdump kullanma

  1. Aşağıdaki komutla arka uç sunucusunda bir tcpdump yakalayın:
    tcpdump -i any -s 0 host MP_IP_Address -w File_Name
    
  2. Yakalanan tcpdump öğesini analiz edin:

    Aşağıda örnek bir tcpdump çıkışı verilmiştir:

    Yukarıdaki tcpdump örneğinde aşağıdakileri görebilirsiniz:

    1. 5992, paketinde, arka uç sunucusu GET isteği aldı.
    2. 6064 paketinde 200 OK. ile yanıt veriyor
    3. 6084 paketinde, arka uç sunucusu başka bir GET isteği aldı.
    4. 6154 paketinde 200 OK ile yanıt verir.
    5. 6228 paketinde, arka uç sunucusu üçüncü bir GET isteği aldı.
    6. Bu kez, arka uç sunucusu İleti İşleyen'e bir FIN, ACK döndürür (6285 paketi) ile bağlantı kapatılmaya başlanır.

    Bu örnekte aynı bağlantı başarıyla iki kez yeniden kullanılmış ancak üçüncü istekte arka uç sunucusu bağlantıyı kapatma işlemini başlatırken İleti İşleyici arka uç sunucusundan veri bekleniyor. Bu, arka uç sunucusunun kolay bir şekilde alive zaman aşımı büyük olasılıkla API proxy'sinde ayarlanan değerden daha kısa veya bu değere eşittir. Doğrulamak için Bunun için Apigee ve arka uç sunucusunda aktivasyon zaman aşımını karşılaştırma başlıklı makaleye göz atın.

Apigee ve arka uç sunucusundaki canlı zaman aşımını karşılaştırma

  1. Apigee, canlı tutma zaman aşımı özelliği için varsayılan olarak 60 saniyelik bir değer kullanır.
  2. Ancak API Proxy'sinde varsayılan değeri geçersiz kılmış olabilirsiniz. Bunu,TargetEndpoint 502 hataları veren API Proxy'si başarısız.

    Örnek TargetEndpoint yapılandırması:

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <URL>https://mocktarget.apigee.net/json</URL>
        <Properties>
          <Property name="keepalive.timeout.millis">30000</Property>
        </Properties>
      </HTTPTargetConnection>
    </TargetEndpoint>
    

    Yukarıdaki örnekte, keep alive zaman aşımı özelliği 30 saniye (30000 milisaniye) değeriyle geçersiz kılındı.

  3. Ardından, arka uç sunucunuzda "Keep alive zaman aşımı" özelliğini yapılandırılmış tutma özelliğini kontrol edin. Diyelim ki arka uç sunucunuz 25 seconds değeriyle yapılandırılır.
  4. Apigee'de canlı tutma zaman aşımı özelliğinin değerinin daha yüksek olduğunu tespit ederseniz arka uç sunucusunda Keep alive zaman aşımı özelliğinin değerinden daha yüksek 502 hatalarının nedeni budur.

Çözünürlük

Keep alive zaman aşımı özelliğinin Apigee'de her zaman düşük olduğundan emin olun (API Proxy'sinde ve Mesaj İşleyici bileşeni) arka uç sunucudakiyle karşılaştırılmıştır.

  1. Arka uç sunucusunda keep alive zaman aşımı için ayarlanan değeri belirleyin.
  2. API Proxy'sinde keep alive zaman aşımı özelliği için uygun bir değer yapılandırın ya da Keep alive zaman aşımı özelliğinin, arka uç sunucusuna gidin. İleti İşlemcilerinde canlı tutma zaman aşımını yapılandırma.

Sorun devam ederse şu adrese gidin: Teşhis bilgileri toplanmalıdır.

En İyi Uygulama

Aşağı akış bileşenlerinin her zaman daha az hayatta kalma zaman aşımına sahip olması önemle tavsiye edilir. bu tür yarış koşullarından kaçınmak için yukarı akış sunucularında yapılandırılandan daha yüksek bir eşikle 502 hata. Her bir aşağı akış atlaması, her bir yukarı akış atlama değerinden daha düşük olmalıdır. Apigee'de Edge'de aşağıdaki yönergelerin kullanılması iyi bir uygulamadır:

  1. İstemci aktivasyon zaman aşımı, Edge Yönlendirici'nin canlı tutma zaman aşımından az olmalıdır.
  2. Uç Yönlendiricinin canlı tutma zaman aşımı süresi, Mesaj İşlemcinin canlı tutma zaman aşımından az olmalıdır.
  3. İleti İşleyici tutma zaman aşımı, hedef sunucunun canlı tutma zaman aşımından az olmalıdır.
  4. Apigee'nin önünde veya arkasında başka atlama noktaları varsa aynı kural uygulanmalıdır. Bu işlemi her zaman aşağı akış müşterisinin sorumluluğunda bağlantı kurmalısınız.

Teşhis bilgileri toplanmalıdır

Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki ve Apigee Edge Destek Ekibi ile iletişime geçin.

Herkese açık Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Kuruluş adı
  • Ortam adı
  • API Proxy adı
  • 502 hatasını yeniden oluşturmak için curl komutunu tamamlayın
  • 502 Bad Gateway - Unexpected EOF hatasına sahip istekleri içeren izleme dosyası
  • Şu anda 502 hataları görünmüyorsa dönemi Geçmişte 502 hata oluştuğunda saat dilimi bilgileri

Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Başarısız istekler için tam hata mesajı gözlemlendi
  • Gözlemlediğiniz kuruluş, ortam adı ve API proxy adı 502 hata
  • API Proxy paketi
  • 502 Bad Gateway - Unexpected EOF hatasına sahip istekleri içeren izleme dosyası
  • NGINX erişim günlükleri
    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
  • Mesaj İşleyici günlükleri
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • 502 hatalarının meydana geldiği saat dilimi bilgilerini içeren dönem
  • Hata oluştuğunda İleti İşlemcilerinde veya arka uç sunucusunda Tcpdumps toplanan ya da her ikisinde de gerçekleşti