5

我有一个 ASPX 网页,它执行一些复杂的操作和数据库调用。当我通过运行 ASP.NET Development Server (Cassini) 查看网页时,大约需要200ms

然后,在没有任何代码更改和配置更改的情况下,我将网站部署到我的本地计算机 IIS 7 并再次查看相同的网页。它需要2.0 秒慢了 10 倍

我认为 IIS 应该比 Cassini 更快(或至少与 Cassini 一样快)。

为了进一步调查,我创建了一个新页面 test1.aspx,它只包含一个在 Page_Load 中运行了 9000 万次的空 for 循环。在 Cassini 中,大约需要 200 毫秒。在 IIS 中,它需要 300 毫秒(慢 50%)。

导致 IIS 比 Cassini 慢的原因可能是什么?或者,也许是一个更好的问题,我怎样才能使 IIS 至少与 Cassini 一样快?

4

1 回答 1

10

快速而简短的回答:

配置 Web 应用程序使用的应用程序池以启用 32 位应用程序:

将启用 32 位应用程序设置为 True

详细攻略:

我使用了一些性能分析工具(有些是免费的)来比较性能并找出瓶颈。免费的EQATEC Profiler足以让我比较运行 Cassini 和 IIS 生成的两个报告,并确定导致问题的方法。但是,该方法包含太多行,我无法确定导致问题的确切行。

然后Redgate ANTS就派上用场了。通过使用行级详细信息分析该方法,我发现它是 RegEx 运行非常缓慢。

进一步搜索使我在这里找到答案:RegEx.Match 在 IIS 中比 Development Server (Cassini) 慢得多。我正在使用带有 IIS 7 的 Windows 7 64 位。将“启用 32 位应用程序”设置为 True 可以解决问题。


此外,关于以 32 位或 64 位运行 IIS 的一些相关阅读:

64 位服务器在用于 SQL Server 等数据库或其他数据管理服务器(例如,Exchange 等企业电子邮件服务器)时比用于处理服务器(如IIS 或它管理的工作进程)更有效。

每次查找都需要 64 位指针,这会使一切变慢。

资料来源:在 64 位操作系统上以 32 位与 64 位运行 IIS 的优缺点是什么?

于 2012-10-18T12:02:58.437 回答