我正在调查MVC3应用程序在负载下失败的错误:
“在从池中获取连接之前经过了超时时间。这可能是因为所有池中的连接都在使用中,并且已达到最大池大小。”
该应用程序正在使用Repository模式和Entity Framework,我的直觉是它没有正确关闭连接。我希望能够监视SQL Server上池化连接的数量。到处搜索使我相信我可以在Perfmon中使用这些计数器:
但是它们都显示并且被禁用/变灰。
我直接在服务器上运行Perfmon,并且ISS和SQL Server都在服务器上运行。为什么这些计数器不可用的任何想法?
我也尝试过使用SQL Profiler监视池连接,但是EventSubClass列不可用于AuditLogin。
您可以在SQL查询窗口中运行此命令,以获取计数以及SQL Server上正在运行的当前连接和会话的详细信息。
从SQL方面来看,唯一可行的方法是设置登录事件跟踪。 “事件子类”(Event Subclass)列将告诉您事件是否使用池连接发生。这样,您就可以关联主机,登录名和应用程序名称,然后继续进行挖掘。