asp.net-mvc – ASP.NET MVC和EF代码第一内存使用
我有一个内置ASP.NET MVC 3的应用程序,它使用SQL CE存储和EF CTP 5进行数据访问。
我已经将这个站点部署到一个共享的主机上,以发现它在不断被回收,因为它们在他们(专用的)应用程序池上设置了100mb的限制。 该网站在释放模式下运行时使用大约110mb RAM。 我试过使用SQL Server Express而不是CE,这没有什么区别。 唯一显着的区别是当我完全删除EF(使用假的回购)。内存使用量下降了30?40mb。一个空白的MVC模板使用大约20mb,所以我认为这不是太糟糕? “标准”ASP.NET MVC应用程序是否有基准测试? 了解其他EF CTP用户的内存使用情况以及内存分析工具的一些建议(最好是免费的)是很好的。 值得一提的是如何处理EF ObjectContext的生命周期。我正在使用每个请求的会话,并使用StructureMap实例化ObjectContext: For<IDbContext>().HttpContextScoped().Use(ctx => new MyContext("MyConnStringName")); 非常感谢 解决方法
我们确实设法大大减少了内存占用。 IIS工作进程现在位于50mb左右,而之前的100 mb。
以下是帮助我们的一些事情: >检查基本信息。确保在发布模式下编译,并在web.config中将编译调试设置为false。很容易忘记这样的事情。 输出缓存的注释: 最终没有一个关于如何优化应用程序的硬规则。当我们停止使用ORM建立我们的协会(面向公众面向我们网站的一部分)时,我们的应用程序性能最大的改进,而不是手动加载到我们的视图模型中。我们无法使用EF热切加载它们,因为有太多的关联(导致一个凌乱的UNION查询)。 一个例子是我们的标记机制。可以标记BlogPost和Project等实体。标签和可标签实体具有多对多关系。在我们的情况下,最好是检索所有标签并缓存它们。然后,我们创建了一个linq投影来缓存可标记实体的关联密钥(例如ProjectId / TagId)。当为我们的页面创建viewmodel时,我们可以为每个可标记实体建立标签,而不会触发数据库。同样,这是针对我们的应用程序,但它在性能方面大大提高,并降低了内存使用量。 我们沿用的一些资源/工具: > EFProf – 监视由Entity Framework生成的查询(免费试用) 虽然我们做出了改进,这将使我们受到托管公司的(Arvixe)应用程序池限制,我觉得有义务告诉那些正在查看他们的Windows经销商计划的人,这样的限制已经到位(自从Arvixe不在广告计划时提到这一点)。所以当某些东西看起来太好了,不能成为真实的(无限的x,y,z),它通常是。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – TinyMCE应该如何在ASP.NET MVC页面上工作?
- asp.net-mvc – 具有输出参数的ExecuteSqlCommand
- asp.net – 我如何做一个已经内置到dll中的程序集,特别是fl
- asp.net中MVC借助Iframe实现无刷新上传文件实例
- asp.net-mvc – 使用disabled =“disabled”属性创建一个Se
- asp.net-mvc – MVC:覆盖默认的ValidationMessage
- 如何使用ASP.NET.Core Angular模板添加字体真棒
- .net – 设置可用于AppFabric缓存的内存量
- asp.net-mvc – 要查看的ASP.NET MVC 2控制器:IList还是Li
- Asp.net Razor,语法错误 – onclick事件参数
- asp.net – 如何为每个Azure部署插槽使用不同的w
- asp.net – JSON:序列化从IEnumerable派生的类型
- asp.net-mvc – 是否可以使用自定义错误页面与MV
- asp.net-mvc-5 – 如何让Glimpse与EF6合作?
- asp.net-mvc – OnAction中的读取属性在asp.net
- asp.net-mvc – ASP.NET MVC:从控制器返回CDN图
- asp.net-mvc-3 – MVC模型范围验证器?
- asp.net-web-api – 使用SimpleInjector有没有办
- asp.net-mvc – 如何将我的对象保存回LINQ to SQ
- asp.net – 从存储过程获取结果以填充GridView