追踪数据库连接问题

时间:2012-10-24 14:38:57

标签: asp.net coldfusion error-handling sql-server-2008-r2 database-connection

背景

我们在连接到单个数据库服务器的不同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使用率等数据......我们还没有看到尖峰或其他任何可能导致问题的因素。
  • 我们已经在网络和数据库服务器上安装了wireshark,希望能够解决问题而不会取得任何成功。

问题

  1. 有没有人建议我下一步该看哪儿?
  2. 是否存在可能导致此问题的数据库属性?
  3. 有没有办法以更好的方式“监控”数据库和Web服务器之间的连接?
  4. 在应用方面是否可以做任何事情来更好地了解正在发生的事情?
  5. 应用程序捕获的错误

    • .NET错误
      • 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
      • 超时已过期。操作完成之前经过的超时时间或服务器没有响应。
      • 从服务器接收结果时发生传输级错误。 (提供者:TCP提供者,错误:0 - 信号量超时期限已过期。)
      • 超时已过期。从池中获取连接之前经过的超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。
    • ColdFusion错误
      • 执行数据库查询时出错。与主机的TCP / IP连接失败。 java.net.ConnectException:连接超时:连接
        第38行发生错误。
      • 执行数据库查询时出错。通过对等方重置连接:套接字写入错误
        第91行发生错误。
      • 执行数据库查询时出错。尝试建立连接超时了第38行发生了错误。

1 个答案:

答案 0 :(得分:1)

在CF中,我曾经遇到过你所看到的问题。我在1台服务器上安装了CF,在另一台服务器上安装了sql 2008 r2。我会在下面看到你发布的CF错误。为了帮助跟踪网络错误,我写了类似这样的内容:

1)创建了一个down.bat

tracert serverip

2)然后我围绕查询。

当查询生成错误时,我会执行

    <cfmail to="ME" from="Server" subject="SQL DOWN">

    Server Debugging Info:
    ------------------------------------------------------------    
    #now()#

    #cfcatch.Detail#

    #cfcatch.Message#

    #log#        

    </cfmail>

这有助于我解决我的情况,最终成为数据中心的硬件。