如何解决ASP.NET 4.0 Web应用程序中的内存泄漏包含ASHX处理程序



我的团队已使用ASP.NET 4.0与实体框架,ASHX处理程序和网页(> 20)构建了Web Corporate ERP应用程序。该应用程序是为了容纳15000多名用户而构建的。但是,当该应用程序托管在测试环境上时,登录用户登录时会引发错误的网关错误。该应用程序包含3层 - 前端(ASPX页面),实体层,dataAccess layer(classS)。

后端服务器是SQL Server 2008 R2。

测试报告说 - 连接超时,大量内存泄漏和不受管理的代码。我们已经尽力通过处理对象和类等来修复内存泄漏。应用程序不包含最小图像。

但问题仍然相同。甚至Web和DB服务器的服务器配置都在很高的端。16 CPU和4 GB RAM。

任何人都可以帮我吗?

这将花费您一些时间并'挖掘'以获取引起问题的原因。在不存在的情况下,我们可以提供的只是要调查的事情,例如:

  • 使用性能监视器可以更好地了解正在发生的事情。在您的网络和数据库服务器上执行此操作。您想用于ASP.NET和SQL Server有不同的计数器。搜索perfmon.exe,counters,asp.net和sql Server应该使您走上正确的路径。在各种方案中运行并详细检查数字:网站上的一个用户执行各种操作,10个用户,100等。

  • 使用SQL Server Profiler了解事物数据库侧的情况。

  • 使用windbg-互联网搜索将使您走上正确的道路 - 如果您不熟悉它,它将逐渐增加,但功能很强大。

  • 过去,我使用了红色门蚂蚁性能分析器和内存profiler(红色门)等工具。这些工具的成本可能会有所增加,但是它们为我节省了方法,超出了能够快速识别"低悬挂果实"问题的费用。披露 - 我不以任何方式隶属于红色门。

  • 当用户超过600时,测试环境中的问题是否正好启动,或者通常以某种数字变化但超过600的数字?如果问题始终以相同数量的用户开始,那是一个线索,可以查看新用户登录时到底会发生什么 - 您是否加载了不一定需要的大量数据,等等。实际上,您应该查看即使问题启动的用户数量有所不同,它也会有"气味"。

  • 您是否大量使用会议?它存储在哪里?

  • 您需要支持的同时用户数量是多少?您提到15,000,您是否在Web服务器上加载平衡?(这不一定与解决问题有关,而是您可能需要考虑的架构)

  • 4 GB的RAM不是很高的端,尤其是对于数据库服务器。您可能需要更多,但这并不是说"只需扔RAM"就可以对上述项目进行调查。

最新更新