我有一个ASP.NET MVC5 Web应用程序,它消耗了生产服务器上的大量内存(过多的原因是随着时间的推移它会增加,并且直到我们将应用程序池回收到约8 GB时才停止)我们让它达到的最大值是30 GB)。该应用程序在我的开发机或测试服务器上无法像这样执行。
生产服务器是运行IIS 8.5.9600的Windows Server 2012 R2。
我编写了一个小型测试工具,该工具可以创建50个并发线程,并且每个线程发送1000个顺序请求。在开发过程中,Web应用程序的内存大约为400 MB,就像在我们的测试环境中一样。在生产服务器上,内存不断增加。端点做什么无关紧要,我只是返回了普通的.cshtml
Razor视图。
一段时间以来,我一直在尝试找出可能导致内存泄漏的原因,并尝试了一些方法:
生产服务器确实具有96 GB的RAM,据我对IIS如何使用它的了解,它可能会非常贪婪。但是我的开发机有32 GB,我见过的最大应用程序池大小约为600 MB,然后它经过GC处理后又减小到约400 MB。
什么占用了所有内存?这是IIS的正常行为吗?
更新: 我已经在Azure上创建了具有类似规格(112 GB RAM)的新VM服务器,并且内存也停止在400 MB左右。必须有特定于我们的生产服务器的东西才引起问题。
答案 0 :(得分:1)
在我们的案例中,正是我们的托管服务提供商安装了一些监视工具,这些监视工具对.NET分析API的使用不佳。
我建议任何在应用程序中观察到类似症状的人尝试配置新的服务器实例。