Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, Edge Microgateway'deki API çağrılarına yanıt olarak 502 Bad Gateway HTTP durum kodunu ECONNRESET koduyla birlikte alır.
Hata mesajı
İstemci aşağıdaki yanıt kodunu görür:
HTTP/1.1 502 Bad Gateway
Yanıt aşağıdaki hata mesajını içerir:
{"message":"socket hang up","code":"ECONNRESET"}Olası nedenler
| Neden | Açıklama | Aşağıdaki ürünler için geçerli sorun giderme talimatları |
|---|---|---|
| Yanlış yapılandırılmış keep-alive zaman aşımı | Edge Microgateway ile hedef sunucu arasında keep-alive zaman aşımları yanlış yapılandırılmış. | Edge Public ve Private Cloud kullanıcıları |
| Hedef sunucu bağlantıyı erken kapatıyor | Edge Microgateway, istek yükünü gönderirken hedef sunucu bağlantıyı erken kapatıyor. | Edge Public ve Private Cloud kullanıcıları |
Sık karşılaşılan teşhis adımları
- Edge Microgateway günlüklerini kontrol edin:
/var/tmp/edgemicro-`hostname`-*.log
- Belirli bir süre boyunca (sorun geçmişte yaşandıysa)
502kodluECONNRESEThatalar olup olmadığını veya502ile hâlâ başarısız olan istekler olup olmadığını arayın.2021-06-23T03:52:24.110Z [error][0:8000][3][myorg][test] [emg_badtarget/flakey/hangup][][][6b089a00-d3d6-11eb-95aa-911f1ee6c684] [microgateway-core][][GET][502][socket hang up][ECONNRESET][]
- Günlüğe kaydetme düzeyini
warnveyainfoolarak ayarladıysanız ikinci öğede hedef sunucu ana makine adı ve bağlantı noktası da dahil olmak üzere bir[warn]mesajı yer alır. Bu örnekteX.X.X.X:8080değeri kullanılıyor. Bu değer daha sonratcpdumpyakalamak için kullanılabilir.2021-06-23T03:52:24.109Z [warn][X.X.X.X:8080][3][myorg][test][emg_badtarget/flakey/hangup] [][][6b089a00-d3d6-11eb-95aa-911f1ee6c684][plugins-middleware] [targetRequest error][GET][][socket hang up][ECONNRESET][395]
[socket hang up][ECONNRESET]hata kodu, hedef sunucunun Edge Microgateway ile bağlantıyı kapattığını gösterir. Bu durumun ne sıklıkta yaşandığını belirlemek için günlüklerde arama yapabilirsiniz.
Neden: Keep-alive zaman aşımı yanlış yapılandırılmış
Teşhis
- Yaygın teşhis adımlarındaki adımları uygulayın ve
[socket hang up][ECONNRESET]hatasını alıp almadığınızı doğrulayın. Cevabınız evet ise aşağıdaki
tcpdumpyardımıyla daha ayrıntılı bir inceleme yapın:
tcpdump'ı kullanma
- Aşağıdaki komutla Edge Microgateway ana makine işletim sisteminde Edge Microgateway ile arka uç sunucusu arasında
tcpdumpyakalayın:tcpdump -i any -s 0 host TARGET_SERVER_HOSTNAME -w FILENAME.pcap
- Yakalanan
tcpdumpöğelerini analiz edin:Örnek tcpdump çıkışı: ( Daha büyük resmi görüntüleyin)
Yukarıdaki örnekte
tcpdumpşunları görebilirsiniz:- 250288 numaralı pakette istemci bir
POSTisteği gönderir. - 250371 numaralı pakette sunucu,
200 OKile yanıt veriyor. - İstemci, 250559 numaralı pakette bir
ACK.gönderir. - 250560 numaralı pakette sunucu,
Continuationmesajını gönderir. - 250561 numaralı pakette istemci,
ACK. - 262436 numaralı pakette sunucu, bağlantının kapatılmasını başlatan istemciye
FIN, ACKgönderir. Bunun, önceki paketten (250561) yaklaşık beş saniye sonra olduğunu unutmayın. - 262441 numaralı pakette istemci başka bir
POSTisteği gönderir. Ancak sunucu bağlantının kapatılmasını zaten başlattığı için bu işlem başarısız olur. Paket 262441 içindeRSTile yanıt veriyor.
Bu örnekte aynı bağlantı en az bir kez başarıyla yeniden kullanılmıştır. Ancak son istekte sunucu, beş saniyelik boşta kalma süresinden sonra bağlantının kapatılmasını başlatır. Bu süre, istemcinin yeni bir istek gönderdiği zamana denk gelir. Bu, arka uç sunucusunun canlı tutma zaman aşımının büyük olasılıkla istemcide ayarlanan değerden daha kısa veya bu değere eşit olduğunu gösterir. Bunu doğrulamak için Uç Microgateway ve arka uç sunucusunda etkin kalma zaman aşımını karşılaştırma başlıklı makaleyi inceleyin.
- 250288 numaralı pakette istemci bir
keep-alive zaman aşımlarını karşılaştırma
- Edge Microgateway'in belirli bir keep-alive zaman aşımı özelliği yoktur. Bu, çalıştığı işletim sistemi tarafından belirlenir. Windows, Linux ve Docker kapsayıcıları yaygın örneklerdir.
- Bu özellik, işletim sisteminde özelleştirilmiş olabilir. Sistem yöneticinize danışın. Linux işletim sistemlerinde varsayılan olarak iki saatlik bir keep-alive zaman aşımı vardır.
- Ardından, arka uç sunucunuzda yapılandırılan keep-alive zaman aşımı özelliğini kontrol edin. Arka uç sunucunuzun 10 saniye değeriyle yapılandırıldığını varsayalım.
- İşletim sistemindeki canlı tutma zaman aşımı değerinin, yukarıdaki örnekte olduğu gibi arka uç sunucusundaki canlı tutma zaman aşımı özelliğinin değerinden daha yüksek olduğunu belirlerseniz bu durum
502hatalarına neden olur.
Çözünürlük
Edge Microgateway'in çalıştığı işletim sisteminde keep-alive 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.
- İşletim sisteminde, keep-alive zaman aşımı özelliğinin arka uç sunucusunda ayarlanan değerden daha düşük olmasını sağlayacak şekilde keep-alive zaman aşımı özelliği için uygun bir değer yapılandırın. Bu işlem için işletim sisteminize uygun adımları kullanın.
En İyi Uygulama
Bu tür yarış koşullarını ve 502 hatalarını önlemek için aşağı akış bileşenlerinin her zaman yukarı akış sunucularında yapılandırılanlardan daha düşük bir etkin tutma 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. Edge
Microgateway'de aşağıdaki yönergeleri kullanmak iyi bir uygulamadır:
İstemci uygulamasındaki veya yük dengeleyicideki keep-alive zaman aşımı, Edge Microgateway keep-alive zaman aşımından daha kısa olmalıdır.
Edge Microgateway'de keep-alive zaman aşımını yapılandırmak için
keep_alive_timeoutdeğerini~/.edgemicro/org-env-config.yamldosyanıza ekleyin.edgemicro: keep_alive_timeout: 65000
- Edge Microgateway işletim sistemi keep-alive zaman aşımı, hedef sunucu keep-alive zaman aşımından daha kısa olmalıdır.
- Edge Microgateway'in önünde veya arkasında başka atlamalar 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.
Neden: Hedef sunucu bağlantıyı erken kapatıyor
Teşhis
- Yaygın teşhis adımları bölümünde açıklanan adımları uygulayın ve
[socket hang up][ECONNRESET]hatasını alıp almadığınızı doğrulayın. - Evetse aşağıda açıklandığı gibi
tcpdumpyardımıyla daha ayrıntılı bir inceleme yapın.Yukarıdaki örnekteki
[targetRequest error][GET][][socket hang up][ECONNRESET]hata mesajı, bu hatanın Edge Microgateway isteği arka uç (hedef) sunucuya gönderirken oluştuğunu gösterir. Yani Edge Microgateway, arka uç sunucusuna API isteği göndermiş ve yanıtı bekliyordu. Ancak arka uç sunucusu, Edge Microgateway yanıt almadan ö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. Hata veya bilgi bulursanız Çözüm bölümüne gidip sorunu arka uç sunucunuzda uygun şekilde düzeltin.
- Arka uç sunucunuzda herhangi bir hata veya bilgi bulamazsanız Edge Microgateway sunucusunda
tcpdumpçıkışını toplayın:tcpdump -i any -s 0 host TARGET_SERVER_HOSTNAME -w FILENAME.pcap
- Yakalanan
tcpdumpöğelerini analiz edin:Örnek tcpdump çıkışı: ( Daha büyük resmi görüntüleyin)
Yukarıdaki örnekte
tcpdumpşunları görebilirsiniz:- 4 numaralı pakette Edge Microgateway, hedef sunucuya
GETisteği gönderdi. - 5 numaralı pakette hedef sunucu, isteği onaylamak için
ACKile yanıt verdi. - Ancak 6 numaralı pakette hedef sunucu, yanıt yüküyle yanıt vermek yerine bağlantının kapatılmasını başlatan bir
FIN, ACKgönderir. - 7 numaralı paketten itibaren bağlantı karşılıklı olarak kapatılır. Bağlantı, yanıt gönderilmeden önce kapatıldığından Edge Microgateway, HTTP
502hatasını istemciye geri döndürür. - 8 numaralı paketin zaman damgasının,
2021-06-23T03:52:24.110ZEdge Microgateway günlüklerinde hatanın kaydedildiği zaman damgasına karşılık geldiğini unutmayın. Günlük dosyalarındaki vetcpdumpiçindeki zaman damgaları, hataları gerçek paketlerle ilişkilendirmek için kullanılabilir.
Çözünürlük
Arka uç sunucusundaki sorunu uygun şekilde düzeltin.
Sorun devam ederse ve
502 Bad Gateway Errorile ilgili sorun giderme konusunda yardıma ihtiyacınız varsa veya sorunun Edge Microgateway'den kaynaklandığını düşünüyorsanız Teşhis bilgilerini toplama başlıklı makaleyi inceleyin.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:
- Günlük dosyaları: Varsayılan klasör
/var/tmp'dir ancak anaconfig.yamldosyasında (logging > dir parameter) geçersiz kılınabilir. Günlük dosyalarını Apigee Destek Ekibi'ne göndermeden öncelog > level'yiinfoolarak değiştirmeniz önerilir. - Yapılandırma dosyası: Edge Microgateway'in ana yapılandırması, varsayılan Edge Microgateway klasöründeki YAML dosyasında (
$HOME/.edgemicro) bulunur.default.yamladlı bir varsayılan yapılandırma dosyası ve her ortam için birer taneORG-ENV-config.yamlyapılandırma dosyası bulunur. Lütfen bu dosyayı etkilenen kuruluş ve ortam için eksiksiz olarak yükleyin.
- 4 numaralı pakette Edge Microgateway, hedef sunucuya