从 Azure 虚拟机连接到 Azure SQL 数据库的能力出现间歇性问题

Intermittent issue with ability to connect to Azure SQL Database from Azure Virtual Machine

我在 Azure 虚拟机上 运行 有一个 .NET WCF 服务应用程序。它与已列入白名单且一切正常的 Azure SQL 数据库连接并交互。一段时间后(通常为 5 到 7 天),Azure 虚拟机无法再连接到 Azure SQL 数据库。这是我在这种损坏状态下检查过的内容:

1) 我已关闭连接池并检查 "netstat -a" 以查看我的应用程序在达到此状态时是否正在泄漏连接。不是。

2) 我将本地开发机器(运行 相同的应用程序)指向 Azure SQL 数据库。一切正常。连接没有问题。

3) 我尝试从 Azure 虚拟机远程登录到端口 1433 上的 Azure SQL 数据库。它没有连接。在我下面提到的重启后,我可以远程登录到 1433 就好了。

4) 我尝试从我的本地开发机器远程登录到端口 1433 上的 Azure SQL 数据库。它连接正常。

因此,这似乎是虚拟机查找 Azure SQL 数据库的问题。

要让它再次运行,我必须重新启动虚拟机。 iisreset 或循环应用程序池无效。

这在上个月发生了 5 次。一旦我重新启动虚拟机,它将正常工作大约 5 到 7 天,然后再次进入此状态。它似乎无法自行恢复,因为我已将其置于这种状态超过一天,看它是否会自我纠正。

非常感谢任何解决问题的帮助或关于当它进入这种状态时要检查什么的想法。

这是由 windows 服务泄漏内存引起的。当服务的 RAM 消耗达到 400MB 左右时,我就能够在 1433 上重现块 telnet 到数据库服务器。当我回收该服务时,它开始工作。我已经修复了漏洞,现在一切正常。

正在将评论转换为答案:

你检查过内存泄漏了吗? SQL VM 不会主动关闭任何端口,因此几天后端口关闭的事实表明可能存在内存泄漏导致端口关闭。