首页 > 解决方案 > ASP.NET MVC5 应用程序内存泄漏

问题描述

我有一个 ASP.NET MVC5 Web 应用程序,它在我们的生产服务器上消耗了过多的内存(过多,因为它会随着时间的推移而增加,并且似乎不会停止,直到我们以 ~8 GB 回收应用程序池,我们的最大值'让它达到 30 GB)。该应用程序在我的开发机器或我们的测试服务器上不会像这样执行。

生产服务器是运行 IIS 8.5.9600 的 Windows Server 2012 R2。

我编写了一个小型测试工具,它创建 50 个并发线程并每个线程发送 1000 个顺序请求。在开发过程中,Web 应用程序的内存保持在 400 MB 左右,就像在我们的测试环境中一样。在生产服务器上,内存不断增加。端点做什么并不重要,我只是让它返回一个香草.cshtmlRazor 视图。

一段时间以来,我一直在尝试找出可能导致内存泄漏的原因并尝试了一些方法:

生产服务器确实有 96 GB 的 RAM,根据我对 IIS 如何使用它的理解,它会变得非常贪婪。但是我的开发机器有 32 GB,我看到的最大应用程序池大小约为 600 MB,然后它被 GC 处理并减少到约 400 MB。

是什么占用了所有的内存?这是 IIS 的正常行为吗?

更新: 我在 Azure 上创建了一个具有类似规格(112 GB RAM)的新 VM 服务器,内存也停止在 400 MB 左右。我们的生产服务器一定有一些特定的东西导致了这个问题。

标签: asp.net-mvciismemory-leaksiis-8windows-server-2012-r2

解决方案


在我们的案例中,是我们的托管服务提供商安装了​​一些使用 .NET 分析 API 的监控工具。

我建议任何在其应用程序中观察到类似症状的人尝试配置新的服务器实例。


推荐阅读