SocketException'dan Azure Function Proxy İç Sunucu Hatası 500
Proxy kullanan ve arka uç olarak başka bir Azure işlevine ileten bir Azure İşlevim var. GET'i kabul eden bir / api / ping uç noktası vardır. Ping'e bir HTTP-GET gönderdiğimde, sadece proxy üzerinde isteği gördüğümde ancak arka uç kod yürütme işlevinde isteği görmediğimde hatalı bir 500 Dahili Sunucu Hatası alıyorum.
Sonuçları izlemek için başlığa "true" için "Proxy-Trace-Enabled" başlığını ekledim. Sonuçları D: \ home \ LogFiles \ Application \ Proxies \ DetailedTrace klasörümde buluyorum. Orada, başarısız bir istek için günlük, aşağıdakileri içeren bir "Arka uç" json nesnesi içerir
{
"source": "forward-request",
"timestamp": "2020-08-20T15:42:20.8272145Z",
"elapsed": "00:00:00.0061051",
"data": {
"messages": [
"Only one usage of each socket address (protocol/network address/port) is normally permitted Only one usage of each socket address (protocol/network address/port) is normally permitted",
"Only one usage of each socket address (protocol/network address/port) is normally permitted",
"Only one usage of each socket address (protocol/network address/port) is normally permitted"
]
}
}
Bunun DotNet'teki Azure Functions 1.0 olduğuna inanıyorum, ancak uzun zaman önce oluşturuldu. Neden basit Azure Function proxy'im yürütmem için arka uç koduma iletmeyen dahili sunucu hataları veriyor?
İsteklerin nasıl izleneceğine ilişkin referans için
Yanıtlar
Soket bağlantılarıyla ilişkili Azure İşlev Uygulama Hizmet Planları için TCP Bağlantısı eşikleri vardır. Dokümantasyon, buraya bağlanacağım bir blogdaydı. TCP / Bağlantı Noktası Tükenmesi konusunda, sorunlar arasında benzer bir ilişki kullanan benzer bir soru vardı . Bildirilen istisna farklı olsa da, açık olduğu uygulama hizmetini ölçeklendirirken testimdeki hatalar kayboluyor.
Örnek: 2 Azure İşlevim var, FunctionA ve FunctionB. FunctionA bir proxy'dir ve App Service Plan P1'de arka uç yürütmesi yoktur. FunctionB, ilişkili olmayan bir işlevdir, ancak aynı App Service Plan P1'de yürütülür.
App Service Plan P1 kapsamındaki FunctionA, çağrıldığında Dahili 500 Sunucu Hatası sorunları veriyor. App Insights'ta Hatalı olarak bildirildi ve arka uç günlüklerinde soket istisnası olarak izlendi.
Azure İşlevi FunctionA'yı App Service Plan P3'te yeniden oluşturdum. FunctionA, 500 Dahili Sunucu Hatası almadı. Ancak KÖO ödeme planının ölçeğini gerektirmez. Ben de onu P1'e geri taşıdım. Yine sunucu hataları oluştu.
FunctionB, FunctionA (P1) ile aynı App Service Planındaydı. Azure İzleme Metrikleri, dakikada 4.200 SocketOutboundAll olarak özetlenmiştir. FunctionB'yi P1'den P3'e taşıdım (silip yeniden oluşturdum). Fonksiyon A'yı P1'de tuttum. SocketOutboundAll hataları, P1'deki FunctionA'dan kaldırılmıştır. P3 Uygulama Hizmet Planındaki işlevler de herhangi bir istisna bildirmiyor.