在 Azure Web 应用程序中调试 TCP/IP 端口耗尽

Joa*_*rar 5 tcp azure ravendb azure-web-app-service

我在部署到 Azure 应用服务的 Web 应用程序上收到 TCP/IP 端口耗尽错误。该问题与占用端口的 RavenDB 连接会话有关。我想我有一个修复程序并且应该很好,但我觉得自己被超越了,因为我真的无法在部署的环境中做很多调试。

在调试问题时,我尝试访问 netstat,但收到访问被拒绝消息,似乎无法绕过它。有什么想法吗?

切线:Azure webapp 中的端口是如何分配的?提出的选项(如https://msdn.microsoft.com/en-us/library/aa560610(v=bts.20).aspx 中所述)有减少套接字连接超时值或动态增加端口上限分配给客户端 TCP/IP 套接字连接。但是,我认为这在 Azure Web 应用程序中是不可能的。

Fre*_*ing 1

这可以通过更新 Ravendb 实例来解决!在这里阅读更多信息: https://ayende.com/blog/173057/production-postmorterm-houston-we-have-a-problem

从更新日志来看,版本 3.0.30100

修复了许可组件中的 UDP 端口泄漏

还有这个,从 3.0.30115 开始:

[主要] [预取] 修复了内存泄漏,该泄漏可能导致服务器在重负载下变慢,从而影响索引和复制机制

以及有关 Azure 服务和端口可用性的一些有用知识: http://www.freekpaans.nl/2015/08/starving-outgoing-connections-on-windows-azure-web-sites/

简而言之,问题出现在asyncUDP 回复数据包因任何原因被丢弃/丢失的呼叫中。在问题解决之前,这意味着async调用会持续侦听响应,直到发生崩溃或 iisreset。

我们正在推出升级,以尝试在接下来的 24 小时内修复同一问题的实例,但我想我会立即回复,因此您也可以测试这是否确实是您的问题。

我将回到这篇文章以确认该问题将会消失 - 唯一确定的方法是更新 Ravendb 并等待一两周。