【发布时间】:2020-10-11 11:51:10
【问题描述】:
我继承了大量 C# dotnet 代码,这些代码显然在某些地方没有关闭与 sql server 的连接或其他东西,我得到了
The timeout period elapsed prior to obtaining a connection from the pool: This may have occurred because all pooled connections were in use and max pool size was reached
这种情况经常发生,而且通常同时发生,但我不知道有什么安排好的。手动搜索代码中的每一个小地方也是不可能的。任何想法如何在不手动检查代码中的每个函数的情况下解决这个问题?
【问题讨论】:
-
这也可能是长时间运行查询的症状。检查服务器端活动。
-
您可能不需要查看代码中的每个函数,只需查看数据访问代码和使用它的代码即可。你在使用 ORM 吗?如果有,是哪一个?
-
你的意思是像实体框架? @sh1rts
-
@DanGuzman 与 spwho2 或类似的东西?
-
@TalC,是的
sp_who2将报告来自应用程序的服务器端连接。我从您的其他评论中看到,您看到了数百个休眠连接。如果Last Batch时间超过几分钟,则表明连接未正确关闭。在这种情况下,using块是你的朋友。如果时间是最近的,则表明最近的活动高峰,可能与连接池错误相关。在这种情况下,查询和索引调优可能会有所帮助。
标签: c# asp.net sql-server entity-framework