为什么SqlConnection.Open有时会执行缓慢

时间:2014-04-11 11:25:46

标签: c# sql-server performance ado.net connection-pooling

我们有一个应用程序,它通过ADO.NET与许多MS SQL Server进行交互。 当前的sql server setup:每个实例上有3个数据库的5个实例。因此,数据库总数为15。 该应用程序对每个数据库执行操作(SELECT,UDPATE,INSERT)(每秒约2000次操作)。 我们使用标准的ado.net连接池功能,在每次操作之前和SqlConnection.Open()之前调用SqlConnection.Close()。 它很顺利,但有时(约占总呼叫数的1%)SqlConnection.Open()需要1到3秒。这会伤害我们的表现,对我们来说至关重要。

连接字符串示例:

<add name="cs1" connectionString="Data Source=MyServer;Initial Catalog=MyDataBase1;Integrated Security=True;Max Pool Size=100;Min Pool size=16;App=BM_OFF_B"/>

根据性能计数器,池化连接的数量保持稳定,这意味着不会创建新连接,只会重用现有连接。

问题是:为什么SqlConnection.Open()最多需要3秒才能创建物理连接?如何解决这个性能问题?

0 个答案:

没有答案