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:
- İncele kontrol paneline gidin.
- Açılır menüden Durum Kodu 'nu seçin ve doğru zamanın seçildiğinden emin olun.
502hata gerçekleştiğinde dönemi seçilir. - Çok sayıda
502hatası görüyorsanız matristeki kutuyu tıklayın. - Sağ tarafta bulunan
502hataları için Günlükleri Görüntüle'yi tıklayın. aşağıdaki gibi görünür: - Hata Kaynağı:
target - Hata Kodu:
messaging.adaptors.http.UnexpectedEOFAtTarget

Burada aşağıdaki bilgileri görebiliriz:
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:
-
oturum izleme oturum açın ve
502 Bad Gatewaysorununu yeniden oluşturmak için API çağrısını yapın. - Başarısız isteklerden birini seçin ve izini inceleyin.
- İzlemenin çeşitli aşamaları arasında gezinin ve hatanın nerede oluştuğunu bulun.
-
İstek hedef sunucuya gönderildikten sonra aşağıdaki gibi hata mesajını görürsünüz:


-
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,
502hatasının Hedef sunucudan geliyor:Yanıt başlıkları Değer X-Apigee.fault-source targetX-Apigee.fault-code messaging.adaptors.http.flow.UnexpectedEOFAtTargetAyrıca,
502hatası içinX-Apigee.Message-IDile 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:
- NGINX erişim günlüklerini kontrol edin.
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log - Belirli bir süre boyunca belirli API proxy'si için
502hatalarını arayın (sorun geçmişte oluşmuşsa) veya502ile hâlâ başarısız olan istekler için. - Herhangi bir
502hatası varsa hatanın hedeften kaynaklanıp kaynaklanmadığını kontrol edinUnexpected EOFgönderiliyor. X-Apigee.fault-source ve X- Apigee.fault-code aşağıdaki tabloda gösterilen değerlerle eşleşir.502hatası Bağlantının beklenmedik bir şekilde kapatılmasından kaynaklanmaktadır:Yanıt Başlıkları Değer X-Apigee.fault-source targetX-Apigee.fault-code messaging.adaptors.http.flow.UnexpectedEOFAtTargetAşağıda, hedef sunucunun neden olduğu
502hatası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
- API İzleme, İzleme aracını veya
İleti kimliğini belirlemek için NGINX erişim günlükleri
502hatasının hata kodu ve kaynak kaynağı. - Etkilenen API için kullanıcı arayüzünde izlemeyi etkinleştirin.
- Başarısız API isteğinin izleme bölümünde aşağıdakiler gösteriliyorsa:
502 Bad Gatewayhatası, hedef akış isteği başlar başlamaz görünür.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.
- Edge management API çağrısını kullanarak hedef sunucu tanımını alın:
- 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>
- 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ı
TargetServertanımı örneği:<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> </TargetServer >
- Herkese açık Cloud kullanıcısıysanız şu API'yi kullanın:
-
Resimli
TargetServertanımı, tipik bir bakış açısının oluşan yanlış yapılandırmaları içerir:mocktarget.apigee.nethedef sunucusunun yapılandırıldığını varsayalım.443bağ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 İşleyicideUnexpectedEOFAtTargethatası. Mesaj İşleyen,502 Bad Gatewayolarak 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 için 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.
- Arka uç hizmeti tek yönlü SSL iletişimi gerektiriyorsa:
TargetServertanımına,SSLInfoöğesini ekleyerek TLS/SSL'yi etkinleştirmeniz gerekir.enablediş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>- 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>
- Arka uç hizmeti iki yönlü SSL iletişimi gerektiriyorsa:
ClientAuthEnabledileSSLInfoözelliklerinizin olması gerekir.Keystore,KeyAliasveTruststoreiş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
Neden: Arka uç sunucusundan EOFException
Arka uç sunucusu aniden EOF (Dosya Sonu) gönderebilir.
Teşhis
- API İzleme, İzleme aracını veya
İleti kimliğini belirlemek için NGINX erişim günlükleri
502hatasının hata kodu ve kaynak kaynağı. - İ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çineof unexpectedvarsa veya API için benzersizmessageidöğ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 unexpectedhatası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.
- 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.
- Arka uç sunucunuzda hata veya bilgi yoksa Mesaj İşlemcilerinde
tcpdumpçıkışını toplayın:- 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
- 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].
- Arka uç sunucu ana makinenizin tek bir IP adresi varsa aşağıdaki komutu kullanın:
-
Aşağıdaki
tcpdumpörneğini göz önünde bulundurun.502 Bad Gateway Errorsırasında alınan örnektcpdump(UnexpectedEOFAtTarget) gerçekleşme
- TCPDump çıkışında aşağıdaki etkinlik sırasını görürsünüz:
985paketinde, Mesaj İşleyici API isteğini arka uç sunucusuna gönderir.986paketinde, arka uç sunucusu[FIN,ACK]ile hemen yanıt verir.987paketinde, Mesaj İşleyici arka uca[FIN,ACK]ile yanıt veriyor sunucu.- Sonunda bağlantılar her iki taraftan da
[ACK]ve[RST]ile kapatılır. - Arka uç sunucusu
[FIN,ACK]gönderdiği için Mesajdajava.io.EOFException: eof unexpectedistisna İşleyen.
- 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 İleti
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:
- 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.
- 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.
- Ancak, istek arka uç sunucusuna gelmeden önce keep alive zaman aşımı arka uç sunucusunda eşik o zamandan beri aşılmıştır.
- Mesaj İşleyici'nin bir kaynak isteği devam ediyor, ancak arka uç sunucusu
İletiye
FINpaketi göndererek bağlantıyı kapatmaya çalışır İşleyen. - İleti İşleyen, verilerin alınmasını beklerken
beklenmedik
FINhatası oluşur ve bağlantı sonlandırılır. - Bu,
Unexpected EOFve ardından502ile 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
- Herkese açık Cloud kullanıcısıysanız:
- 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
- Hata kodu:
- Daha ayrıntılı inceleme için tcpdump kullanma bölümüne gidin.
- 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:
- Private Cloud kullanıcısıysanız:
- İzleme aracını kullanın veya
İleti kimliğini belirlemek için NGINX erişim günlükleri
502hatası için hata kodu ve hata kaynağı. - İleti İşleyen günlüğünde ileti kimliğini arayın
(/opt/apigee/var/log/edge-message-processor/logs/system.log). java.io.EOFEXception: eof unexpectedsimgesi 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)
java.io.EOFException: eof unexpectedhatası, İleti İşleyen, iletinin okunmasını beklerken birEOFarka uç sunucusundan alınır.- 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 vebytesWritten=159, İletiyi İşleyen'in isteği gönderdiğini belirtir arka uç sunucuya159bayt yükü. Ancak sıfır bayt aldı beklenmedikEOFgerçekleştiğinde geri döndü. -
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
EOFaldı. 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
tcpdumpyardımıyla daha ayrıntılı inceleme yapabilirsiniz.
- İzleme aracını kullanın veya
İleti kimliğini belirlemek için NGINX erişim günlükleri
tcpdump kullanma
- Aşağıdaki komutla arka uç sunucusunda bir
tcpdumpyakalayın:tcpdump -i any -s 0 host MP_IP_Address -w File_Name
- Yakalanan
tcpdumpöğesini analiz edin:Aşağıda örnek bir tcpdump çıkışı verilmiştir:

Yukarıdaki
tcpdumpörneğinde aşağıdakileri görebilirsiniz:5992,paketinde, arka uç sunucusuGETisteği aldı.6064paketinde200 OK.ile yanıt veriyor6084paketinde, arka uç sunucusu başka birGETisteği aldı.6154paketinde200 OKile yanıt verir.6228paketinde, arka uç sunucusu üçüncü birGETisteği aldı.- Bu kez, arka uç sunucusu İleti İşleyen'e bir
FIN, ACKdöndürür (6285paketi) 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
- Apigee, canlı tutma zaman aşımı özelliği için varsayılan olarak 60 saniyelik bir değer kullanır.
-
Ancak API Proxy'sinde varsayılan değeri geçersiz kılmış olabilirsiniz. Şuradaki belirli
TargetEndpointtanımını kontrol ederek bunu doğrulayabilirsiniz:502hataları 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 (
30000milisaniye) değeriyle geçersiz kılındı. - 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 secondsdeğeriyle yapılandırılır. - 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
502hatalarının nedeni budur.
Çözünürlük
Keep alive zaman aşımı özelliğinin Apigee'de her zaman daha düşük olduğundan emin olun (API Proxy'sinde ve Mesaj İşleyici bileşeni) arka uç sunucudakiyle karşılaştırılmıştır.
- Arka uç sunucusunda keep alive zaman aşımı için ayarlanan değeri belirleyin.
- 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ç sunucusunda açıklanan adımları uygulayarak İ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:
- İstemci aktivasyon zaman aşımı, Edge Yönlendirici'nin canlı tutma zaman aşımından az olmalıdır.
- Uç Yönlendiricinin canlı tutma zaman aşımı süresi, Mesaj İşlemcinin canlı tutma zaman aşımından az olmalıdır.
- İleti İşleyici tutma zaman aşımı, hedef sunucunun canlı tutma zaman aşımından az olmalıdır.
- 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ı
502hatasını yeniden oluşturmak içincurlkomutunu tamamlayın502 Bad Gateway - Unexpected EOFhatasına sahip istekleri içeren izleme dosyası- Şu anda
502hataları görünmüyorsa dönemi Geçmişte502hata 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ı
502hata - API Proxy paketi
502 Bad Gateway - Unexpected EOFhatası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 502hatalarının meydana geldiği saat dilimi bilgilerini içeren dönem- Hata oluştuğunda ileti işlemcilerinde veya arka uç sunucusunda
Tcpdumpstoplanan ya da her ikisinde de gerçekleşti