实体框架中的连接泄漏
本文关键字:连接 泄漏 框架 实体 | 更新日期: 2023-09-27 18:37:07
在过去的两天里,我一直在尝试解决以下错误:
超时已过期。从池获取连接之前经过的超时期限。这可能是因为所有池连接都在使用中,并且已达到最大池大小。
据我检查,我们所有的DbContext
请求都用using
包裹,但看起来它仍然没有得到处理或其他东西。
有没有办法确定 Web 应用程序是否泄漏连接?我还能试试吗?!
我试图增加 SQL Server 中的超时 + 将池大小从默认值 100 增加到 200 作为临时结果,但它没有帮助,这不是我想要的解决方案。
任何建议都会有所帮助。
我想我有一个与你类似的案例。我们的旧项目版本(仍在使用 EF4)在我的代码不接触上下文时泄漏连接。上下文被创建,分配一个新的连接,但在Dispose()上,上下文似乎没有返回其连接。
如果我只执行一个小查询(.First() 在任何随机表上)在未充分利用的上下文中,情况会有所改善。
我的项目的最新分支使用 EF6。该代码工作正常。
帮助我追踪这一点的是SQL探查器。我也大致知道我的问题用户在做什么,所以我重复了他的步骤并密切关注 Profiler 的 SPID 列。然后我逐步浏览了部分代码,直到我得到了我正在追逐的幽灵连接之一。
(我刚才偶然发现了这个,所以我没有时间进一步调查)