IIS 工作进程对同一服务器上的相同站点的内存使用率很高

Posted

技术标签:

【中文标题】IIS 工作进程对同一服务器上的相同站点的内存使用率很高【英文标题】:IIS Worker Process has High Memory Usage for Identical Sites on Same server 【发布时间】:2020-08-14 08:04:40 【问题描述】:

我有两个具有相同代码的 .NET 4.6.1 MVC Web 应用程序,它们在 Windows Server 2016 上的 IIS 10.0.14393.0 上运行。在 IIS 中查看工作进程时,站点 A 的内存约为 150mb,但为 350mb对于站点 B。我知道代码是相同的,因为我复制了站点 A 的目录以创建站点 B。我检查了两者的应用程序池设置,它们与私有内存限制和虚拟内存限制的 0 相同以及所有其他设置相同。

这是一个开发服务器,所以没有其他人访问这些应用程序。执行的唯一操作是显示登录页面。直到我进入登录页面,应用程序才显示在工作进程部分。有没有人曾经在 2 个相同的网站上遇到过这种类型的内存差异,并且有任何关于审查的建议?

我还将代码移至另一台服务器,其内存使用情况与站点 B 相似。我已按照以下站点的说明查找内存泄漏,但未发现任何问题。这是有道理的,因为这不一定是内存泄漏,而是一个站点最初在一个实例中而不是在另一个实例中使用大量内存。

https://docs.microsoft.com/en-us/iis/troubleshoot/performance-issues/troubleshooting-native-memory-leak-in-an-iis-7x-application-pool

基于它在同一服务器上运行相同代码和相同请求的两个应用程序之间分配内存的方式大不相同,我怀疑这是我遗漏的服务器设置或 IIS 设置,或者只是对 IIS 如何分配的基本误解工作进程的内存。任何帮助或相关资源将不胜感激。

我也查看了这篇文章,但我的情况有所不同,因为相同的站点位于同一台服务器上:IIS worker process making high memory usage

【问题讨论】:

使用内存分析器或使用挂起转储分析。互联网上的大量材料涉及如此庞大的主题。 谢谢!这是我第一次尝试解决内存问题,所以我会检查一下。如果我们更新站点 B 以使用站点 A 应用程序池,我们确实发现站点 B 的内存使用量达到 150mb。因此,它似乎与特定的应用程序池相关联,从而使内存使用率保持在较低水平。 【参考方案1】:

该问题确实与应用程序池设置之间的差异有关。在站点 A 和站点 B 之间的初始比较中,我错过了站点 A 将启用 32 位应用程序设置为 True,而站点 B 将启用 32 位应用程序设置为 False。

这里的教训是在比较设置后仔细检查。 :-)

【讨论】:

以上是关于IIS 工作进程对同一服务器上的相同站点的内存使用率很高的主要内容,如果未能解决你的问题,请参考以下文章

IIS 中的多个站点。 HTTPS 冲突

iis 站点使用 100% cpu

win8以上系统查看iis网站进程内存占用情况

cmd下命令行创建 IIS 站点

应用程序池错误

nxlog 进程根据文件名记录文件