.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 3应用程序中编辑并继续
- asp.net-mvc-3 – insert命令需要插入数据绑定设置Kendo Gr
- ASP.NET Core 2.0中Razor页面禁用防伪令牌验证
- asp.net-mvc – ASP.NET MVC:在其中生成带有自定义html的动
- 如何将组名应用于asp.net中的HTML单选按钮?
- asp.net-mvc – 是否可以使用RedirectToAction清除路由值?
- asp.net – 浏览器关闭后的身份验证/会话cookie删除
- asp.net-web-api – WebApi 2超出最大请求长度
- asp.net – web.config不转发到非.aspx页面上的404错误页面
- .net-4.0 – Asp.Net 4.0 CacheItemPolicy滑动到期不正确?
- asp.net-mvc-3 – 新加载页面而不是缓存
- asp.net-mvc – ASP.NET MVC – 单元测试过度杀毒
- asp.net – 禁用帐户锁定与SqlMembershipProvide
- asp.net-mvc – ASP.NET MVC Html.RadioButton异
- ASP.NET MVC下Ajax.BeginForm方式无刷新提交表单
- asp.net – MiniProfiler.Stop()上的MVC Mini Pr
- asp.net-mvc – 在MVC Controller中访问GET参数
- asp.net – 超时已过期.从池中获取连接之前经过的
- 关闭一个子目录的ASP.Net WebForms身份验证
- ASP.NET登录页面重定向问题
