【问题标题】:.net 4 connecting to SQL server open tcp port issue.net 4 连接到 SQL 服务器打开 tcp 端口问题
【发布时间】:2011-12-14 19:11:57
【问题描述】:

我们正在运行 windows 2008 server IIS7 .NET 4. 网站。

问题描述: IIS 停止响应,因为 SQL 服务器打开了数百个 tcp 连接。我们运行了一个端口扫描器,可以看到它们来自本地 IP 地址。我们也正在运行分析器,但我们无法找到一种方法来确定是哪个命令或过程打开了未正确关闭的连接。

SQL 连接似乎使用“使用”语句正确编码。同样在任何异常情况下,我们都会检查连接状态。关闭或打开池化没有区别。终止连接并重新启动 iis 确实可以解决问题。这是一个生产服务器,因此很难调试。我尝试了各种工具,但我们无法将 tcp 连接链接回源。所有连接都具有相同的时间戳,这是奇数。我们已经在 beta 服务器上进行了调试,所有异常都显示出来了,但没有发现任何东西。

我想要一些关于从哪里开始、代码被继承以及网站繁忙的建议。

连接字符串是:

<add key="ConnectionStringSearch" 
     value="pooling=false;Connection Lifetime=90;Password=;Connect Timeout=999;
            Persist Security Info=True;User ID=;Initial Catalog;Data Source=2;
            Network Library=DBMSSOCN"/>

【问题讨论】:

  • 你能发布你的连接字符串吗?您还说“使用”正在使用中,但这是否包括 DataReaders?
  • 对不起,让我澄清一下做SQL连接的代码块是使用ms指定的程序来调用SQL server。是的数据阅读器。
  • 连接字符串是标准的,暂时关闭池。因为池化似乎更糟。
  • 请定义标准(连接字符串)。

标签: asp.net .net sql-server


【解决方案1】:

【讨论】:

  • 谢谢你给了我一些工作。我会做所有建议并报告。
【解决方案2】:

如果您在连接字符串中包含“Application Name=Some String”,那么在 SQL Profiler 中,有一列您可以在其中看到“Some String”作为应用程序的名称。

如果您在代码打开连接的任何地方都使用不同的应用程序名称,那么您可以看到哪些连接仍然打开。它还将有效地禁用连接池,因为池会比较连接字符串以确定应重用哪些连接。

话虽如此,看来您当前的连接字符串格式不正确。你可能想先解决这个问题。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2012-07-04
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多