Asp.net .NET应用程序在IIS-8 Windows Server 2012中的加载速度非常慢

Asp.net .NET应用程序在IIS-8 Windows Server 2012中的加载速度非常慢,asp.net,performance,iis-8,windows-server-2012-r2,deepsecurity,Asp.net,Performance,Iis 8,Windows Server 2012 R2,Deepsecurity,在阅读了stack exchange和大量MSDN文章数月后,我来到社区寻求帮助。我是我所在组织的IIS管理员&我一直看到一个问题,即当对.NET应用程序进行更改时,当请求第一次提交到页面时,页面需要很长时间才能加载。当我说“长时间”时,我指的是任何时间,从五分钟到半小时不等。我尝试了很多方法来解决这个问题。但我相信,有一个配置设置埋在某个地方导致了这个问题。一旦页面加载一次,它的加载时间是正常的。不管应用程序如何,这似乎都会发生,尽管有些应用程序比其他应用程序需要更长的时间。这也是不一致的。有

在阅读了stack exchange和大量MSDN文章数月后,我来到社区寻求帮助。我是我所在组织的IIS管理员&我一直看到一个问题,即当对.NET应用程序进行更改时,当请求第一次提交到页面时,页面需要很长时间才能加载。当我说“长时间”时,我指的是任何时间,从五分钟到半小时不等。我尝试了很多方法来解决这个问题。但我相信,有一个配置设置埋在某个地方导致了这个问题。一旦页面加载一次,它的加载时间是正常的。不管应用程序如何,这似乎都会发生,尽管有些应用程序比其他应用程序需要更长的时间。这也是不一致的。有时,更改后加载需要7分钟。下一次进行更改时,相同的应用程序可能需要17分钟才能加载。。。更改通常非常小,移动新图像框或添加新链接。没什么大不了的

如果一个应用程序第一次加载需要20秒到1分钟,我们就不担心了。但是10分钟,15分钟,有时半小时的装载时间是不可接受的


无论它是否是静态内容应用程序,或者它是否正在接触数据源,问题都会发生。与数据源的任何连接都是在应用程序级别配置的。我们只在少数应用程序上使用了这一点&我验证了web.config中的连接信息对于那些确实接触到数据源的应用程序是有效的。我们在每个应用程序上都使用Windows身份验证

我们运行一个三层环境,全部运行Windows Server 2012 R2标准,具有16gb的ram和多核CPU设置。我们正在.NET 4.0.30319上运行IIS 8.5。应用程序池正在利用集成的管道,支持32位应用程序(应用程序都是这样的)。这些是VMware主机。服务器每周重新启动一次。 该问题不会发生在我们的测试或开发服务器上。只有我们的生产服务器。一天中的什么时候进行更改并不重要

2016年12月,我将所有.NET应用程序从运行IIS 6.0的旧Windows 2003系统移植到新的Windows 2012系统。当我们与开发人员合作更改应用程序中任何硬编码的主机名时,我们最终不得不安装一个CNAME主机记录以将旧主机名重新定向到新主机名。这个问题似乎是在这个时候开始的

我注意到的一个问题是,开发人员在调试模式下编译所有应用程序。我们将此设置更改为false,但在某些情况下仅起到了些许帮助

我还尝试了以下方法:

  • 隔离给定应用程序并将应用程序池设置为始终运行。还尝试将应用程序池标识更改为作为网络服务或服务帐户用户运行

  • 添加应用程序初始化角色并在IIS中配置以始终在应用程序级别运行应用程序池并启用预加载。-当我看到它没有改变时,我就放弃了

  • 我将测试/开发服务器之间的所有角色结合起来,在这些服务器中,生产服务器不会出现问题

  • 在应用程序池级别禁用空闲超时

  • 比较测试和生产之间关于编译设置、超时等的设置

所有这些变化都没有产生任何影响。在没有问题的测试/开发环境中,我找不到任何区别&生产服务器有问题。请让我知道您可能需要的其他信息&我提前感谢您的帮助

谢谢,
Mike

您想预编译页面,这样它们就不会在第一次运行时被编译。IIRC它只是一个简单的web.config添加


尽管说实话,每页5分钟的编译时间似乎有一个更大的问题。我从来没有见过一个新的aspx编译需要超过几秒钟的时间。

Neil N的回答是有道理的,但我肯定会检查一下,看看您的所有服务器上的设置是否相同


如果这不是罪魁祸首,我的下一站肯定是看事件查看器的“应用程序”部分。它可能会抛出一些有意义的警告,以帮助您更接近问题的根源。

我们发现了问题。我们的AV软件就是罪魁祸首。特别是趋势微深安全


当发出请求时&程序将在临时区域(C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET文件)中编译时,我注意到文件的生成似乎需要很长时间。预编译看到了相同的行为。我要求我们的局域网管理员为这个特定的文件夹添加一个例外。一旦完成,第一次加载只需5-10秒,这是可以接受的。再次感谢您的输入。

“无论它是否是静态内容应用程序,问题都会发生”,而且长达一小时的等待表明这不是问题所在。他们的服务器被冲洗了,他们需要把它吹走,重新安装所有新的东西,可能会把它扔进该死的垃圾桶里,然后换一个更好的服务器。@我承认我只浏览了他的8段。很抱歉,这篇文章太长了,只是想尽可能彻底。感谢迄今为止的投入。初始加载后,所有页面都可以正常运行-我不知道服务器是否完全被冲洗了-但是如果我有机会从上级那里重新构建,那么将采用该选项。