Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak 502 HTTP durum kodunu ve Bad Gateway mesajını alır.
502 HTTP durum kodu, istemcinin isteği aslında karşılaması gereken arka uç sunucularından geçerli bir yanıt almadığı anlamına gelir.
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 hatasının yaygın nedenlerinden biri Unexpected EOF hatasıdır. Bu hatanın nedenleri şunlar olabilir:
| Neden | Ayrıntılar | Şu konuda verilen adımlar: |
|---|---|---|
| Yanlış yapılandırılmış hedef sunucu | Hedef sunucu, TLS/SSL bağlantılarını destekleyecek şekilde düzgün yapılandırılmamış. | Edge Public ve Private Cloud kullanıcıları |
| Arka uç sunucusundan EOFException | Arka uç sunucusu, EOF'yi aniden gönderebilir. | Yalnızca Edge Private Cloud kullanıcıları |
| Etkin tutma zaman aşımı yanlış yapılandırılmış | Apigee ve arka uç sunucusunda etkin tutma zaman aşımları yanlış yapılandırılmış. | Edge Public ve Private Cloud kullanıcıları |
Sık karşılaşılan teşhis adımları
Hatayı teşhis etmek için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:
API Monitoring
API İzleme'yi kullanarak hatayı teşhis etmek için:
API İzleme'yi kullanarak 502 hatalarını Sorunları inceleme bölümünde açıklanan adımları uygulayarak inceleyebilirsiniz. Yani:
- İnceleme kontrol paneline gidin.
- Açılır menüden Durum Kodu 'nu seçin ve
502hataları oluştuğunda doğru zaman aralığının seçildiğinden emin olun. - Çok sayıda
502hatası gördüğünüzde matristeki kutuyu tıklayın. - Sağ tarafta,
502hataları için Günlükleri Görüntüle'yi tıklayın. Bu hatalar aşağıdakilere benzer şekilde 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ı inceleme için 502 hatasıyla ilgili Request Message ID bilgisini not edin.
İzleme aracı
İzleme aracını kullanarak hatayı teşhis etmek için:
-
İzleme oturumunu etkinleştirin ve sorunu yeniden oluşturmak için API çağrısı yapın
502 Bad Gateway. - Başarısız olan isteklerden birini seçip izlemeyi inceleyin.
- İzlemenin çeşitli aşamalarında gezinin ve hatanın nerede oluştuğunu bulun.
-
İstek hedef sunucuya gönderildikten sonra aşağıdaki gibi bir hata mesajı görmeniz gerekir:


-
İzleme işlemindeki AX (Analytics Verileri Kaydedildi) Aşamasında X-Apigee.fault-source ve X-Apigee.fault-code değerini belirleyin.
X-Apigee.fault-source ve X-Apigee.fault-code değerleri aşağıdaki tabloda gösterilen değerlerle eşleşiyorsa
502hatasının hedef sunucudan kaynaklandığını doğrulayabilirsiniz:Yanıt başlıkları Değer X-Apigee.fault-source targetX-Apigee.fault-code messaging.adaptors.http.flow.UnexpectedEOFAtTargetAyrıca, daha ayrıntılı inceleme için
502hatasıyla ilgiliX-Apigee.Message-IDbilgisini not edin.
NGINX erişim günlükleri
NGINX kullanarak hatayı teşhis etmek için:
502 durum kodunun nedenini belirlemek için NGINX erişim günlüklerine de bakabilirsiniz. Bu, özellikle sorun geçmişte oluştuysa veya aralıklı olarak oluşuyorsa ve kullanıcı arayüzünde izlemeyi yakalayamıyorsanız yararlıdır. NGINX erişim günlüklerinden bu bilgileri belirlemek için aşağıdaki adımları uygulayın:
- 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 (sorun geçmişte yaşandıysa) belirli API proxy'si için
502hatalarını veya502ile hâlâ başarısız olan istekleri arayın. 502hataları varsa hatanın, hedefinUnexpected EOFgöndermesinden kaynaklanıp kaynaklanmadığını kontrol edin. X-Apigee.fault-source ve X-Apigee.fault-code değerleri aşağıdaki tabloda gösterilen değerlerle eşleşiyorsa502hatası, hedefin bağlantıyı beklenmedik şekilde kapatmasından kaynaklanır:Yanıt Başlıkları Değer X-Apigee.fault-source targetX-Apigee.fault-code messaging.adaptors.http.flow.UnexpectedEOFAtTargetHedef sunucudan kaynaklanan
502hatasını gösteren örnek bir giriş aşağıda verilmiştir:
Ayrıca, daha ayrıntılı inceleme için 502 hatalarının ileti kimliklerini not edin.
Neden: Hedef sunucu yanlış yapılandırılmış
Hedef sunucu, TLS/SSL bağlantılarını destekleyecek şekilde düzgün yapılandırılmamış.
Teşhis
502hatası için ileti kimliğini, hata kodunu ve hata kaynağını belirlemek üzere API İzleme, İzleme aracı veya NGINX erişim günlüklerini kullanın.- Etkilenen API için kullanıcı arayüzünde izlemeyi etkinleştirin.
- Başarısız olan API isteğinin izlemesinde aşağıdakiler gösteriliyorsa:
502 Bad Gatewayhatası, hedef akış isteği başlatılır başlatılmaz görülür.error.class,messaging.adaptors.http.UnexpectedEOF.öğesini gösterir.Bu durumda, sorunun yanlış hedef sunucu yapılandırmasından kaynaklanması çok olasıdır.
- Edge yönetim API'si çağrısını kullanarak hedef sunucu tanımını alın:
- Herkese açık bulut 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 bulut kullanıcısıysanız şu API'yi kullanın:
-
Resimde gösterilen
TargetServertanımı, tipik yanlış yapılandırmalardan birinin örneğidir ve şu şekilde açıklanır:Hedef sunucunun
mocktarget.apigee.net,443numaralı bağlantı noktasında güvenli (HTTPS) bağlantıları kabul edecek şekilde yapılandırıldığını varsayalım. Ancak hedef sunucu tanımına baktığınızda, güvenli bağlantılar için tasarlandığını gösteren başka özellik/işaret olmadığını görürsünüz. Bu durum, Edge'in belirli hedef sunucuya giden API isteklerini HTTP (güvenli olmayan) istekler olarak değerlendirmesine neden olur. Bu nedenle Edge, hedef sunucuyla SSL el sıkışması sürecini başlatmaz.Hedef sunucu,
443üzerinde yalnızca HTTPS (SSL) isteklerini kabul edecek şekilde yapılandırıldığından Edge'den gelen isteği reddeder veya bağlantıyı kapatır. Bu nedenle, Mesaj İşleyici'deUnexpectedEOFAtTargethatası alırsınız. Mesaj İşleyen, istemciye yanıt olarak502 Bad Gatewaygönderir.
Çözünürlük
Hedef sunucunun her zaman gereksinimlerinize göre doğru şekilde yapılandırıldığından emin olun.
Yukarıdaki örnekte, güvenli (HTTPS/SSL) bir hedef sunucuya istekte bulunmak istiyorsanız SSLInfo özelliklerini enabled işareti true olarak ayarlanmış şekilde eklemeniz gerekir. Hedef uç nokta tanımına hedef sunucu için SSLInfo özellikleri eklemek mümkün olsa da karışıklığı önlemek için SSLInfo özelliklerini hedef sunucu tanımının bir parçası olarak eklemeniz önerilir.
- Arka uç hizmeti tek yönlü SSL iletişimi gerektiriyorsa:
- Aşağıda gösterildiği gibi
TargetServertanımındaSSLInfoözelliklerini ekleyerek TLS/SSL'yi etkinleştirmeniz gerekir. Bu özelliklerdeenabledişareti true olarak ayarlanır:<TargetServer name="mocktarget"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer> - Hedef sunucunun sertifikasını Edge'de doğrulamak istiyorsanız güvenli depoyu (hedef sunucunun sertifikasını içeren) da aşağıdaki gibi eklememiz gerekir:
<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>
- Aşağıda gösterildiği gibi
- Arka uç hizmeti iki yönlü SSL iletişimi gerektiriyorsa:
- Aşağıda gösterildiği gibi
SSLInfoözelliklerindeClientAuthEnabled,Keystore,KeyAliasveTruststoreişaretlerinin uygun şekilde ayarlanmış olması gerekir:<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 >
- Aşağıda gösterildiği gibi
Referanslar
Arka uç sunucularında yük dengeleme
Neden: Arka uç sunucusundan EOFException
Arka uç sunucusu, EOF'yi (Dosya Sonu) aniden gönderebilir.
Teşhis
502hatası için ileti kimliğini, hata kodunu ve hata kaynağını belirlemek üzere API İzleme, İzleme aracı veya NGINX erişim günlüklerini kullanın.- Mesaj İşleyici günlüklerini
(
/opt/apigee/var/log/edge-message-processor/logs/system.log) kontrol edin ve belirli API içineof unexpectedolup olmadığını veya API isteği için benzersizmessageidolup olmadığını görmek için arama yapın. Ardından, benzersiz'yi arayabilirsiniz.Mesaj işleyici günlüğünden ö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, Mesaj İşleyici arka uç sunucusundan yanıt okumaya çalışırken
java.io.EOFException: eof unexpectedhatasının oluştuğunu görebilirsiniz. Bu istisna, dosyanın sonunun (EOF) veya akışın sonunun beklenmedik bir şekilde ulaşıldığını gösterir.Yani, Mesaj İşleyici API isteğini arka uç sunucusuna göndermiş ve yanıtı bekliyor veya okuyordu. Ancak arka uç sunucusu, Mesaj İşleyici yanıtı almadan veya yanıtı tamamen okuyamadan önce bağlantıyı aniden sonlandırdı.
- Arka uç sunucu günlüklerinizi kontrol edin ve arka uç sunucunun bağlantıyı aniden sonlandırmasına neden olabilecek herhangi bir hata veya bilgi olup olmadığını görün. Herhangi bir hata/bilgi bulursanız Çözüm bölümüne gidin ve sorunu arka uç sunucunuzda uygun şekilde düzeltin.
- Arka uç sunucunuzda herhangi bir hata veya bilgi bulamazsanız ileti işlemcilerinde
tcpdumpçıkışını toplayın:- Arka uç sunucunuzun tek bir IP adresi varsa aşağıdaki komutu kullanın:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
- Arka uç sunucunuzun birden fazla IP adresi varsa aşağıdaki komutu kullanın:
tcpdump -i any -s 0 host HOSTNAME -w FILE_NAME
Bu hata genellikle, Mesaj İşleyici isteği arka uç sunucusuna gönderir göndermez arka uç sunucusunun
[FIN,ACK]ile yanıt vermesinden kaynaklanır.
- Arka uç sunucunuzun tek bir IP adresi varsa aşağıdaki komutu kullanın:
-
Aşağıdaki
tcpdumpörneğini inceleyin.502 Bad Gateway Error(UnexpectedEOFAtTarget) meydana geldiğindetcpdumpörneği alındı
- TCPDump çıkışında aşağıdaki etkinlik sırasını görüyorsunuz:
985paketinde, Mesaj İşleyici API isteğini arka uç sunucusuna gönderir.986paketinde arka uç sunucusu hemen[FIN,ACK]ile yanıt verir.987paketinde, Mesaj İşleyici, arka uç sunucusuna[FIN,ACK]ile yanıt verir.- Sonunda bağlantılar her iki taraftan da
[ACK]ve[RST]ile kapatılır. - Arka uç sunucusu
[FIN,ACK]gönderdiğinden, Message Processor'dajava.io.EOFException: eof unexpectedistisnası alırsınız.
- Bu durum, arka uç sunucusunda ağ sorunu varsa ortaya çıkabilir. Bu sorunu daha ayrıntılı bir şekilde araştırmak için ağ operasyonları ekibinizle iletişime geçin.
Çözünürlük
Arka uç sunucusundaki sorunu uygun şekilde düzeltin.
Sorun devam ederse ve 502 Bad Gateway Error ile ilgili sorun giderme konusunda yardıma ihtiyacınız varsa veya sorunun Edge'de olduğunu düşünüyorsanız Apigee Edge Destek Ekibi ile iletişime geçin.
Neden: Etkin tutma zaman aşımı yanlış yapılandırılmış
502 hatalarının nedeni bu olup olmadığını teşhis etmeden önce lütfen aşağıdaki kavramları okuyun.
Apigee'de kalıcı bağlantılar
Apigee, hedef arka uç sunucuyla iletişim kurarken varsayılan olarak (ve HTTP/1.1 standardına uygun olarak) kalıcı bağlantılar kullanır. Kalıcı bağlantılar, önceden oluşturulmuş bir TCP ve (varsa) TLS/SSL bağlantısının yeniden kullanılmasına izin vererek performansı artırabilir. Bu da gecikme ek yüklerini azaltır. Bağlantının ne kadar süreyle devam etmesi gerektiği, keep alive timeout (keepalive.timeout.millis) özelliğiyle kontrol edilir.
Hem arka uç sunucu hem de Apigee Mesaj İşleyici, bağlantıları açık tutmak için keep-alive zaman aşımlarını kullanır. Etkin tutma zaman aşımı süresi içinde veri alınmadığında arka uç sunucusu veya mesaj işlemcisi, diğeriyle olan bağlantıyı kapatabilir.
Apigee'deki bir Mesaj İşleyici'ye dağıtılan API proxy'lerinde, geçersiz kılınmadığı sürece varsayılan olarak 60s değerine ayarlanmış bir etkin tutma zaman aşımı vardır. 60s için veri alınmadığında Apigee, arka uç sunucusuyla bağlantıyı kapatır. Arka uç sunucusu, etkin tutma zaman aşımını da korur ve bu süre dolduğunda arka uç sunucusu, Mesaj İşleyici ile bağlantıyı kapatır.
Yanlış etkin tutma zaman aşımı yapılandırmasının etkisi
Apigee veya arka uç sunucusu yanlış etkin tutma zaman aşımlarıyla yapılandırılırsa bu durum, arka uç sunucusunun bir kaynak isteğine yanıt olarak beklenmedik bir End Of File
(FIN) göndermesine neden olan bir yarış durumuyla sonuçlanır.
Örneğin, API proxy'sinde veya mesaj işleyicide etkin tutma zaman aşımı, yukarı akış arka uç sunucusunun zaman aşımından büyük ya da ona eşit bir değerle yapılandırılırsa aşağıdaki yarış durumu oluşabilir. Yani, Mesaj İşleyici, arka uç sunucunun etkin tutma zaman aşımı eşiğine çok yaklaşana kadar herhangi bir veri almazsa bir istek gelir ve mevcut bağlantı kullanılarak arka uç sunucuya gönderilir. Bu durum, aşağıda açıklandığı gibi
502 Bad Gateway nedeniyle beklenmedik EOF hatasına yol açabilir:
- Hem Mesaj İşleyici'de hem de arka uç sunucusunda ayarlanan etkin tutma zaman aşımının 60 saniye olduğunu ve önceki istek belirli Mesaj İşleyici tarafından işlendikten sonraki 59 saniyeye kadar yeni bir istek gelmediğini varsayalım.
- Mesaj İşleyici, 59. saniyede gelen isteği mevcut bağlantıyı kullanarak (keep-alive zaman aşımı henüz geçmediği için) işler ve isteği arka uç sunucusuna gönderir.
- Ancak istek arka uç sunucusuna ulaşmadan önce arka uç sunucusunda etkin tutma zaman aşımı eşiği aşılmıştır.
- Mesaj İşleyici'nin kaynak isteği devam ediyor ancak arka uç sunucusu, Mesaj İşleyici'ye
FINpaketi göndererek bağlantıyı kapatmaya çalışıyor. - İleti İşleyici, verilerin alınmasını beklerken bunun yerine beklenmedik bir
FINalır ve bağlantı sonlandırılır. - Bu durum,
Unexpected EOFile sonuçlanır ve ardından Mesaj İşleyici tarafından istemciye502döndürülür.
Bu durumda, hem Mesaj İşleyici'de hem de arka uç sunucusunda aynı 60 saniyelik etkin tutma zaman aşımı değeri yapılandırıldığından 502 hatasının oluştuğunu gözlemledik. Benzer şekilde, bu sorun, ileti işlemcisinde etkin tutma zaman aşımı için arka uç sunucusundakinden daha yüksek bir değer yapılandırılırsa da oluşabilir.
Teşhis
- Herkese açık bulut kullanıcısıysanız:
- API İzleme veya İzleme aracını kullanın (Yaygın teşhis adımları bölümünde açıklandığı gibi) ve aşağıdaki ayarların her ikisine de sahip olduğunuzu doğrulayın:
- 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 İzleme veya İzleme aracını kullanın (Yaygın teşhis adımları bölümünde açıklandığı gibi) ve aşağıdaki ayarların her ikisine de sahip olduğunuzu doğrulayın:
- Private Cloud kullanıcısıysanız:
502hatasıyla ilgili ileti kimliğini, hata kodunu ve hata kaynağını belirlemek için İzleme aracını veya NGINX erişim günlüklerini kullanın.- Mesaj İşleyici günlüğünde ileti kimliğini arayın
(/opt/apigee/var/log/edge-message-processor/logs/system.log). - Aşağıda gösterildiği gibi
java.io.EOFEXception: eof unexpectedsimgesini görürsünüz: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ı, Mesaj İşleyici'nin arka uç sunucusundan yanıt okumayı beklerkenEOFaldığını gösterir.- Yukarıdaki hata mesajında
useCount=7özelliği, Mesaj İşleyici'nin bu bağlantıyı yaklaşık yedi kez yeniden kullandığını,bytesWritten=159özelliği ise Mesaj İşleyici'nin arka uç sunucusuna159baytlık istek yükü gönderdiğini gösterir. Ancak beklenmeyenEOFoluştuğunda sıfır bayt geri alındı. -
Bu, Mesaj İşleyici'nin aynı bağlantıyı birden çok kez yeniden kullandığını ve bu durumda veri gönderdiğini ancak kısa bir süre sonra herhangi bir veri alınmadan önce
EOFaldığını gösteriyor. Bu, arka uç sunucusunun etkin tutma zaman aşımının API proxy'sinde ayarlananla eşit veya daha kısa olma olasılığının yüksek olduğu anlamına gelir.Aşağıda açıklandığı gibi
tcpdumpyardımıyla daha ayrıntılı bir inceleme yapabilirsiniz.
tcpdump'ı kullanma
- Aşağıdaki komutla arka uç sunucusunda
tcpdumpyakalayın:tcpdump -i any -s 0 host MP_IP_Address -w File_Name
- Yakalanan
tcpdumpöğelerini analiz edin:Aşağıda örnek bir tcpdump çıkışı verilmiştir:

Yukarıdaki örnekte
tcpdumpşunları görebilirsiniz:5992,paketinde arka uç sunucusuGETisteği aldı.6064paketinde200 OK.ile yanıt verilir.6084paketinde, arka uç sunucusu başka birGETisteği aldı.6154paketinde200 OKile yanıt veriyor.6228paketinde arka uç sunucusu üçüncü birGETisteği aldı.- Bu kez, arka uç sunucusu bağlantının kapatılmasını başlatan Mesaj İşleyici'ye
FIN, ACKdöndürür (paket6285).
Bu örnekte aynı bağlantı iki kez başarıyla yeniden kullanıldı ancak üçüncü istekte arka uç sunucusu bağlantının kapatılmasını başlatırken Mesaj İşleyici, arka uç sunucusundan gelen verileri bekliyor. Bu durum, arka uç sunucusunun canlı tutma zaman aşımının büyük olasılıkla API proxy'sinde ayarlanan değerden daha kısa veya bu değere eşit olduğunu gösterir. Bunu doğrulamak için Apigee ve arka uç sunucusunda etkin tutma zaman aşımını karşılaştırma başlıklı makaleyi inceleyin.
Apigee ve arka uç sunucusunda etkin tutma zaman aşımını karşılaştırma
- Apigee, varsayılan olarak canlı tutma zaman aşımı özelliği için 60 saniyelik bir değer kullanır.
-
Ancak, API proxy'sinde varsayılan değeri geçersiz kılmış olabilirsiniz. Bunu,
502hataları veren başarısız API proxy'sindeki belirliTargetEndpointtanımını kontrol ederek doğrulayabilirsiniz.Ö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, etkin tutma zaman aşımı özelliği 30 saniye (
30000milisaniye) değeriyle geçersiz kılınır. - Ardından, arka uç sunucunuzda yapılandırılan etkin tutma zaman aşımı özelliğini kontrol edin. Arka uç sunucunuzun
25 secondsdeğeriyle yapılandırıldığını varsayalım. - Apigee'deki keep alive zaman aşımı özelliğinin değerinin, yukarıdaki örnekte olduğu gibi arka uç sunucusundaki keep alive zaman aşımı özelliğinin değerinden daha yüksek olduğunu belirlerseniz
502hatalarının nedeni budur.
Çözünürlük
Apigee'de (API Proxy ve Mesaj İşleyici bileşeninde) etkin tutma zaman aşımı özelliğinin her zaman arka uç sunucusundakinden daha düşük olduğundan emin olun.
- Arka uç sunucusunda etkin tutma zaman aşımı için ayarlanan değeri belirleyin.
- API proxy'sinde veya mesaj işlemcisinde, etkin tutma zaman aşımı özelliğinin arka uç sunucusunda ayarlanan değerden daha düşük olacağı şekilde etkin tutma zaman aşımı özelliği için uygun bir değer yapılandırın. Bu işlem için Mesaj işlemcilerinde etkin tutma zaman aşımını yapılandırma bölümünde açıklanan adımları kullanın.
Sorun devam ederse Toplanması gereken teşhis bilgileri başlıklı makaleye gidin.
En İyi Uygulama
Bu tür yarışma durumlarını ve 502 hatalarını önlemek için, aşağı akış bileşenlerinin her zaman yukarı akış sunucularında yapılandırılan değerden daha düşük bir keep-alive zaman aşımı eşiğine sahip olması önemle tavsiye edilir. Her bir aşağı akış atlaması, her bir yukarı akış atlamasından daha düşük olmalıdır. Apigee Edge'de aşağıdaki yönergeleri kullanmak iyi bir uygulamadır:
- İstemci canlı tutma zaman aşımı, Edge yönlendirici canlı tutma zaman aşımından daha kısa olmalıdır.
- Edge yönlendiricinin etkin kalma zaman aşımı, mesaj işlemcinin etkin kalma zaman aşımından daha kısa olmalıdır.
- Mesaj işlemcisinin etkin kalma zaman aşımı, hedef sunucunun etkin kalma zaman aşımından daha kısa olmalıdır.
- Apigee'nin önünde veya arkasında başka atlamalarınız varsa aynı kural uygulanmalıdır. Yukarı akışla bağlantıyı kapatma sorumluluğunu her zaman aşağı akış istemcisine bırakmalısınız.
Teşhis bilgilerini toplamalıdır
Yukarıdaki talimatları uyguladıktan sonra sorun devam ederse aşağıdaki teşhis bilgilerini toplayın ve Apigee Edge Destek Ekibi ile iletişime geçin.
Herkese açık bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş adı
- Ortam adı
- API proxy'si adı
502hatasını yeniden oluşturmak içincurlkomutunu tamamlayın.502 Bad Gateway - Unexpected EOFhatası içeren istekleri içeren izleme dosyası502hataları şu anda oluşmuyorsa geçmişte502hatalarının oluştuğu zaman aralığını saat dilimi bilgisiyle birlikte belirtin.
Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Başarısız olan istekler için gözlemlenen hata mesajının tamamı
- Gözlemlediğiniz kuruluş, ortam adı ve API proxy adı
502hataları - API proxy paketi
502 Bad Gateway - Unexpected EOFhatası içeren 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 oluştuğu saat dilimi bilgisiyle birlikte zaman aralığıTcpdumps, hata oluştuğunda Mesaj İşleyiciler'de veya arka uç sunucusunda ya da her ikisinde de toplanır.