我们最近将 ASP.NET 4.0 应用程序从 Windows2003 x64/IIS 6 VM 移至新的 Windows 2008 x64 RC2/IIS 7(7.5) VM。资源相同,均为 4GB 内存、4 个 CPU,均位于同一 ESX 主机上。我尝试在两者之间匹配所有可能的 iis 配置设置、缓存、压缩等。然而,根据 alertsite 和 gomez 的外部性能监控,自切换以来响应时间已增加一倍。
“第一个字节时间”平均值全面增加了十分之几秒。“内容”交付时间全面增加了整整一秒。“整页下载”全面增加了几秒钟。
更令人困惑的是,我们从一个双节点的 Windows2008 场开始,使用 ncache 来集群会话,并使用 Brocade 负载平衡器,结果发现响应时间增加了 2-5 倍。然后我们又降到只有一台服务器,绕过负载平衡器,响应时间又增加了 2 倍。
事实上,负载平衡器使情况变得更糟,并且响应时间增加的大部分是在内容/基本页面和整页下载指标上,这让我认为它与网络有关,或者至少在 IIS 级别,它的响应速度不如 IIS6 快。
我希望我忽略了一些关键设置,因为我无法理解升级操作系统和加倍资源(添加第二个节点)如何导致性能下降。
我意识到这些信息并不多,所以我只是想寻求一些建议,看看在哪里可以找到或如何诊断这个问题。关于查看哪些性能计数器、查找什么以及它们的含义的建议会有所帮助。欢迎大胆猜测。
答案1
由于博客不再可用,因此更新答案。这里的答案围绕通过高级适配器设置(IP4 和 IP6)关闭网络适配器的 TCP 卸载。早在 2011 年提出这个问题时,NIC 卡的许多网络驱动程序都无法很好地处理此操作,并且大大降低了操作系统的速度。这种情况通常不再出现,因为从那时起驱动程序和虚拟化软件已经得到了显着改进。
答案2
您是在“经典”模式还是“集成”模式下运行应用程序池?在“经典”模式下运行会产生一些开销,您可能需要研究一下。您可以点击此处了解更多信息。请注意,如果不进行一些细微的更改以便与 IIS7 管道和谐地工作,您的应用可能无法在“集成”模式下运行。
尽管如此,我不确定它是否能准确解释您的情况……特别是如果您真正谈论的是提供基于静态文件系统的内容。但是,如果您在中间有自定义处理程序,那么这肯定是相关的。