【发布时间】:2012-10-14 15:03:42
【问题描述】:
背景
我们在连接到单个数据库服务器的不同 Web 服务器上拥有许多 Web 应用程序。在过去的几个月中,我们注意到每隔一段时间,我们的 Web 服务器将无法连接到数据库服务器。
我们的环境
我们有几个不同的 Web 环境,一些运行 ColdFusion,另一些运行 .NET。 .NET 应用程序既是 Web 窗体又是 MVC。它们跨越从 2.0 到 4.5 的多个版本。 ColdFusion 和 .NET Web 服务器都是基于 Windows 的机器。 ColdFusion 和 .NET Web 环境都是集群的,其中一些机器是物理的,而另一些是虚拟的。
我们的数据库服务器是 SQL Server 2008 r2。它包含多个数据库。每个应用程序都有自己的数据库用户,它连接到只允许它访问特定数据库的服务器。
其他事实
- 当我们注意到问题时,它们会以短时间的形式出现,持续时间从几秒到几分钟不等。
- 当我们注意到问题时,突发包含来自多个不同应用程序的错误,而不仅仅是一个应用程序。
- 当我们注意到问题时,突发包含来自不同 Web 环境的应用程序的错误。 (这让我们认为我们可以排除应用程序本身的问题)
- 连接问题在白天和晚上的不同时间发生。它们并不总是在使用率高的时候。
- 我们已经监控了诸如用户连接数、内存、IO、CPU 使用率等内容......我们没有看到峰值或任何其他可能指向问题的东西。
- 我们已经在 web 和 db 服务器上安装了 wireshark,希望能在没有成功的情况下解决问题。
问题
- 有人对我接下来应该看哪里有建议吗?
- 是否存在可能导致此问题的数据库属性?
- 有什么方法可以更好地“监控”数据库和 Web 服务器之间的连接?
- 是否可以在应用程序端执行任何操作以更好地了解正在发生的事情?
应用程序捕获的错误
- .NET 错误
- 在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
- 超时。在操作完成之前超时时间已过或服务器没有响应。
- 从服务器接收结果时发生传输级错误。 (提供者:TCP 提供者,错误:0 - 信号量超时期限已过。)
- 超时。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且达到了最大池大小。
- ColdFusion 错误
- 执行数据库查询时出错。与主机的 TCP/IP 连接失败。 java.net.ConnectException: Connection timed out: connect
第38行出现错误。 - 执行数据库查询时出错。对等方重置连接:套接字写入错误
错误发生在第 91 行。 - 执行数据库查询时出错。尝试建立连接时超时
第 38 行出现错误。
- 执行数据库查询时出错。与主机的 TCP/IP 连接失败。 java.net.ConnectException: Connection timed out: connect
【问题讨论】:
-
这听起来更像是网络连接问题而不是数据库问题。
-
这听起来确实是 NIC、交换机、路由器、电缆等的网络问题。
-
确定知道或追踪它的最佳方法是什么?
-
也许可以试试pingdom.com
标签: asp.net coldfusion error-handling sql-server-2008-r2 database-connection