【问题标题】:Significant Performance Decrease when moving from Windows Server 2003 to 2008 (IIS 6 to IIS 7)从 Windows Server 2003 迁移到 2008(IIS 6 到 IIS 7)时性能显着下降
【发布时间】:2010-11-24 03:27:01
【问题描述】:

我们的 ASP.Net 2.0 Web 应用程序在 Windows Server 2003 上运行良好。我们开始看到环境的一些限制正在逼近,例如内存和 CPU 使用高峰,并且我们正准备扩展我们决定是时候使用具有更高可用性的更大服务器了。

我们决定迁移到 Windows Server 2008 以利用 IIS 7 的共享配置。在我们的开发和集成环境中,我们重现了 2008/IIS 7 中的操作系统和应用程序,一切看起来都很好。但说实话,目前还没有模拟生产负载的好方法,我们也不能准确地重现我们的生产环境(我们很小,资源有限)。因此,一旦我们投入生产,我们惊讶地发现 2008 年的性能比 2003 年要差得多。

在此过程中,我们还从 32 位环境迁移到 64 位环境,并且我们还将 ASP.Net 3.5 dll 合并到项目中。

内存使用量激增,但我并不担心。我们认为这部分是因为 Server 2008 的内存开销,因此向其投入更多 RAM 可能会解决该问题。令人不安的是,我们看到处理器的 CPU 利用率达到 99%,这是我们在 2003/IIS 6 环境中从未见过的。

以前有没有人遇到过这些问题,是否有任何解决方案/地方的建议?现在我们正在做以下事情:

1) 通过增加内存来购买时间。

2) 通过设置应用程序池限制来争取时间:当 CPU 达到 99% 负载时关闭 w3wp.exe。由于您没有回收应用程序池的选项,因此我有一个计划任务正在运行,可回收任何已停止的应用程序池。

3) 分析经典模式和集成模式下的应用程序池,看看哪个可能表现更好。

完全欢迎任何其他想法。

【问题讨论】:

    标签: performance iis-7 iis-6 windows-server-2008 windows-server-2003


    【解决方案1】:

    我们的经验是,代码在 64 位 windows 2008 上的运行速度比在 32 位 windows 2003 服务器上快得多。

    我想知道机器上是否也在运行其他东西。例如,SQL Server 是否安装了可能导致 CPU 峰值的维护计划。

    我会检查以下内容:

    • 哪个进程正在使用 CPU?
    • 代码有变化吗?尝试在旧机器上安装新代码
    • 与编译选项有关吗? CPU占用是重新编译的吗?
    • 事件日志中是否有任何错误?

    【讨论】:

    • 占用 CPU 的进程是工作进程本身。这似乎是应用程序池启动时发生的间歇性问题。 W3WP.exe 达到 99%,但如果你杀死它,它会在下次启动时运行。另一位用户在 Stack Overflow 上报告了类似的内容。代码是一样的。编译选项是一个很好的选择。我会看看那些。我们已经扫描了事件日志,但我会更深入地研究一下。非常感谢您抽出宝贵时间回答我的问题。
    • 哇!你把对上帝的恐惧放在了我身上。在我听到更多关于此的信息之前,我将非常愿意将我的服务器升级到 2008 年。
    • @Larry 你能检查一下你在任何初始化器/构造器中的代码吗?
    【解决方案2】:

    在我们的案例中,由于我们有 4 个处理器,因此我们将 “工作进程数增加到 4”,目前与以前相比运行良好。

    这里是快照: http://pic.gd/c3661a

    【讨论】:

      【解决方案3】:

      您可以使用 IIS7+ 中的应用程序池“回收”选项来配置应用程序池的物理和虚拟内存限制。一旦达到这些,该过程将回收并释放资源。不幸的是,基于 CUP 使用的回收选项已从 IIS7+ 中删除(如果我错了,有人纠正我)。如果您在服务器上有其他应用程序并希望在这种情况发生时避免它们竞争资源,您可以实施 Windows 系统资源管理器及其 IIS 策略(这里有一个很好的教程http://learn.iis.net/page.aspx/449/using-wsrm-to-manage-iis-70-apppool-cpu-utilization/

      注意 SRWM 仅适用于 Enterprise 和 Data Center 版本。

      【讨论】:

      • 最新情况是,我们在 W2K8 上的 ASP.Net 编译期间似乎比在 W2K3 上经历了更多的服务器负载。我们将部署一个 Web 应用程序(编译后的 ASP.Net 网站),看看这是否会有所改进。
      猜你喜欢
      • 2011-05-11
      • 2015-05-14
      • 2020-05-10
      • 1970-01-01
      • 2011-02-05
      • 2010-09-30
      • 2023-03-08
      • 2015-07-30
      • 1970-01-01
      相关资源
      最近更新 更多