.NET + 连接到 SQL Server 2008 R2

.NET + 连接到 SQL Server 2008 R2

最近,我们的开发人员将所有连接字符串中的池大小增加到 8000。他们使用的是 VS 2010 Framework 4.0。在数据库端,我监控到最多有 4000 个连接正在打开。但问题是我们有大量错误日志(见下文)握手超时问题。

对我来说,这是一个非常棘手的问题,我找不到任何线索。我知道,有了我有的服务器(真正的怪物),我们能够支持打开更多的连接。我知道最大值是 32767,但我从未指望达到这个数字,但 4 公斤要少得多。

连接字符串:

connectionString 1 ="server=S1;database=DB1;Integrated Security=false; user id=user; Password=password; Min Pool Size=10; Max Pool Size=8000; Connect Timeout=5;" providerName="System.Data.SqlClient"/>
.
.
.
connectionString 10 ="server=S1;database=DB10;Integrated Security=false; user id=user; Password=password; Min Pool Size=10; Max Pool Size=8000; Connect Timeout=5;" providerName="System.Data.SqlClient"/>

错误日志:

GXMT.Common.DataGateway.DAOException:已执行命令:System.Data.SqlClient.SqlException:连接超时已过期。登录后阶段已过超时期限。连接可能在等待服务器完成登录过程并做出响应时超时;或者在尝试创建多个活动连接时超时。尝试连接到此服务器所花费的时间为 - [登录前] 初始化=1;握手=3565;[登录] 初始化=0;身份验证=0;[登录后] 完成=1001;---> System.ComponentModel.Win32Exception:等待操作超时

谢谢。

PS:新发现是当连接数超过 4000 个时,即使在 Sql Server Management Studio 中打开一个连接也需要大约 25 秒。!?

答案1

您可能遇到过开发人员不关闭连接并导致连接池增长的情况。定期回收连接池或尝试使用 SQL 跟踪来确定何时创建新连接,以便您可以识别并修复问题代码。

相关内容