.net – 实体框架遇到的最大池大小4.3
这将是一个很长的帖子,所以请挂在我身边.
我在几个月前在这里工作的生产站点之一,我经常在我们的ELMAH日志中看到可怕的连接泄漏错误消息. "Timeout expired. 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." 这使我很困惑,因为我们正在使用EF,连接处理应该是自动的. 所以我开始挖.我认为第一个潜在的罪魁祸首是MiniProfiler(或者我应该说,我们实施使用miniprofiler).我们一直在使用它,它一直运行良好,但我担心潜在的连接泄漏. public OurContext() : base(GetProfilerConnection(),true) {} private static DbConnection GetProfilerConnection() { return new EFProfiledDbConnection(new SqlConnection(ConfigurationManager.ConnectionStrings["Database"].ConnectionString),MiniProfiler.Current); } 我的印象是,基本调用中的“true”参数导致上下文获取连接的所有权,所以我认为这应该正常工作,连接将被处理. 在我们的增强DEV分支中,我删除了miniprofiler,因为它没有被更新以支持EF5,我们将在不久的将来的某个时间进行迁移,所以这应该被删除. 关注二是“我们妥善处理我们的数据指纹”?所以我下载了实体框架事件探查器,并尝试了最重的页面并进行了测试. 结果显示,我们开放的任何语境都是关闭的,然而关于我的部分是我们开放的上下文的数量.我们有我们的DI容器(Ninject 2)设置来设置每个Web http请求的一个上下文 [<img src="/Controller/GetPhotoAction/[ImageId] />] 由于图像是separte请求,因此单独的上下文正在打开.所以,对于这个特定的页面,如果我正确地理解了这个页面,我们正在使用来自连接池的七个不同的连接.不管多少用户,我都看到这个 在数据库中存储图像的原因有两个.一,我们管理这个应用程序的数据的管理应用程序在美国西海岸,但托管应用程序的服务器位于美国东海岸.有一个 在此期间,当我们测试时,我们已经在连接字符串中增加了最大连接池大小,并将在下周初将其部署到PROD. 所以我的问题是: 1)我在这里填写了泄漏检查基地吗?我相信我有.我上面提到的任何事情我错了吗? 2)如果这个页面上的多个数据上下文被证明是罪魁祸首,那么关于如何将图像写入全国两个服务器的建议,请注意权限将跨域?实际上,我想这样做, 3)如果你认为上述都不是问题,我可以失踪什么?是否真的要求要求足够高,我们遇到这个错误,我们需要扩展?我可以挖掘日志来查看使用统计信息,但是 解决方法
有更多的方法来确定您的网络应用程序是否泄漏连接.最近我受益于使用这些:
>使用SQL分析器(您可以看到打开/关闭的连接数) 和你的问题你应该对每个请求有一个数据上下文.当它被绑定到请求范围时,它将被处理在请求的结尾(实际上它被延迟直到垃圾收集器收集请求对象).但请注意,如果您没有直接使用您的数据文本(例如,您有一些存储库模式包装),因为可能存在一些隐藏(连接泄漏)错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – HttpResponseMessage内容不会显示PDF
- asp.net-mvc – 用于asp.net的rails样式数据库迁移?
- asp.net-mvc-4 – 请求太大
- asp.net – 将我的Web应用程序文件发布到远程服务器wwwroot
- asp.net – 没有使用WebApi委托处理程序分配内部处理程序
- asp.net – 在iframe中显示PDF
- asp.net – ModelState.IsValid返回true,即使必需的字符串为
- asp.net-mvc – ASP.NET MVC中的Flat和Nested ViewModel类
- asp.net-mvc – 测试使用DbContext的存储库的最佳方法
- 使用Lucene.NET实现简单的站内搜索
- asp.net-mvc – 在ASP.net MVC 2.0中使用Url.Con
- asp.net – 根据网页中的隐藏字段编辑数据库记录
- ASP.NET在嵌套在更新面板中的用户控件中注入java
- asp.net-mvc – 使用Automapper映射嵌套类
- asp.net-mvc – 访问ASP.NET MVC应用程序中的控制
- asp.net-mvc – ASP.NET MVC 2中的DataAnnotatio
- asp.net-mvc-3 – 实体框架填充了我的文本字段,尽
- 在ASP.NET中使用?感到困惑
- asp.net-mvc – Razor vs Webforms视图引擎,用于
- asp.net – 通过调用.ashx页面下载文件