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.
502
hata gerçekleştiğinde dönemi seçilir. - Çok sayıda
502
hatası görüyorsanız matristeki kutuyu tıklayın. - 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: - 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:
-
oturumu izleyin ve
502 Bad Gateway
sorununu yeniden oluşturmak için API çağrısı 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,
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çinX-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:
- 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
502
hatalarını arayın (sorun geçmişte oluşmuşsa) veya502
ile hâlâ başarısız olan istekler için. - Herhangi bir
502
hatası varsa hatanın hedeften kaynaklanıp kaynaklanmadığını kontrol edinUnexpected 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
- 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ğı. - 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 Gateway
hatası, 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ı
TargetServer
tanı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
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 İşleyicideUnexpectedEOFAtTarget
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.
- Arka uç hizmeti tek yönlü SSL iletişimi gerektiriyorsa:
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>
- 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:
ClientAuthEnabled
ileSSLInfo
özelliklerinizin olması gerekir.Keystore
,KeyAlias
veTruststore
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
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
502
hatası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 unexpected
varsa 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 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.
- 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 Error
sırasında alınan örnektcpdump
(UnexpectedEOFAtTarget
) gerçekleşme - TCPDump çıkışında aşağıdaki etkinlik sırasını görürsünüz:
985
paketinde, Mesaj İşleyici API isteğini arka uç sunucusuna gönderir.986
paketinde, arka uç sunucusu[FIN,ACK]
ile hemen yanıt verir.987
paketinde, 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 unexpected
istisna İş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
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
FIN
paketi göndererek bağlantıyı kapatmaya çalışır İşleyen. - İleti İşleyen, verilerin alınmasını beklerken
beklenmedik
FIN
hatası oluşur ve bağlantı sonlandırılır. - Bu,
Unexpected EOF
ve ardından502
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
- 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
502
hatası 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 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)
java.io.EOFException: eof unexpected
hatası, İleti İşleyen, iletinin okunmasını beklerken birEOF
arka 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ç sunucuya159
bayt yükü. Ancak sıfır bayt aldı beklenmedikEOF
gerç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
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.
- İ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
tcpdump
yakalayı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ç sunucusuGET
isteği aldı.6064
paketinde200 OK.
ile yanıt veriyor6084
paketinde, arka uç sunucusu başka birGET
isteği aldı.6154
paketinde200 OK
ile yanıt verir.6228
paketinde, arka uç sunucusu üçüncü birGET
isteği aldı.- 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
- 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. 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ı. - 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. - 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.
- 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ç 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:
- İ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ı
502
hatasını yeniden oluşturmak içincurl
komutunu tamamlayın502 Bad Gateway - Unexpected EOF
hatasına sahip istekleri içeren izleme dosyası- Şu anda
502
hataları görünmüyorsa dönemi Geçmişte502
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