我们有一个带有 C# 客户端、C# WCF Web 服务层和 SQL Server 数据库的 3 层应用程序。Web 服务使用 ADO.NET 连接到数据库。我们所有的 C# 代码都使用 .NET Framework 2.0。
最近,一位客户对我们的应用程序进行了压力测试。在测试过程中,Web 服务器产生了很多错误,如下所示:
无法连接到数据库以获取连接字符串“...”。超时已过。在操作完成之前超时时间已过或服务器没有响应。
我知道有一些方法可以在连接池已满时捕获连接错误并尝试在连接池之外获取连接。我们还发现了几个需要调整的查询,但它们没有解释 Web 服务器连接超时。
我们试图找出 Web 服务器连接数据库超时的原因。我已设置 Web 服务器以启用所有ADO.NET 性能计数器。但是,我没有看到与连接所需的时间或连接超时等相关的任何内容。理想情况下,我们将能够perfmon
在其他 ADO.NET 计数器旁边绘制连接时间图。
有没有办法监控 ADO.NET 在获取连接时的性能?
我想我们可以通过定时尝试打开连接来创建自己的“平均连接打开时间”性能计数器,但我宁愿使用已经存在的东西。