【问题标题】:ASP.NET websites under IIS 7.5 (Windows 7) running extremely slowIIS 7.5 (Windows 7) 下的 ASP.NET 网站运行速度极慢
【发布时间】:2011-01-23 10:43:47
【问题描述】:

我刚刚在我的台式电脑上安装了 Windows 7 x64 Ultimate。我安装了IIS、Visual Studio 2008、注册了ASP.NET等

我有这个 ASP.NET 3.5 网站,我正在努力在这个新的 IIS 上运行非常慢。在 STA 和 PROD 服务器(Windows 2003 Server)以及我的旧 XP/IIS 5.1 上,一切运行顺利。

通常需要 1-2 秒加载的页面需要 8 秒!!!

我在 IIS 论坛上看到了this post。它说明了 Vista/7 没有池连接(只是让您知道,该网站在本地运行,但它连接到托管在远程服务器上的 SQL Server 2005)。

似乎“开始加载”页面需要一段时间......我的意思是,我点击刷新并停留几秒钟“等待本地主机”......然后当它得到响应时它会加载整个页面通常...

我不知道如何强制 Win7/IIS7.5 共享数据库连接。

编辑:我创建了一个新的空 ASP.NET Web 应用程序来查看问题是否也会发生。答案是否定的,它会以空的默认页面快速响应。也许与数据库连接有关。我会做进一步的测试。这应该是一种修复它的方法......

编辑 2: 调试应用程序我注意到延迟发生在执行 .NET 代码(Page_Load 等)之后......所以延迟似乎在 IIS 为页面提供服务时的某个地方浏览器。

【问题讨论】:

  • serverfault.com imo 的良好候选者...
  • 应用程序配置是 imo 编程/开发的重要组成部分。
  • 虽然与编程有一些相关性 - 开发人员需要了解这类东西,因为他们一定会遇到它。
  • 在你的 Win7 机器上,当页面在 8 秒内加载时,你是唯一一个使用该应用程序的人吗?而在XP上需要1-2秒的时候,你也是一个人测试吗?您的应用是否只为单个页面打开一次数据库连接?如果所有这些答案都是肯定的,那么这应该与连接池无关。如果您设置最小池大小,CP 对连接的第二次和后续使用很有用,而不是第一次使用。
  • 顺便说一句,它是“ASP.NET”——一个词。

标签: windows-7 performance connection-pooling iis-7.5


【解决方案1】:

对于那些有同样问题的人,这里有两种可能的解决方案。

  • 1) 在 Firefox 中禁用 IPv6 支持(仅适用于 Firefox)

我发现的大多数作者都认为这种方法是最快和最干净的解决方案。您需要做的基本上是在 Firefox (about:config) 中打开配置设置并将 network.dns.disableIPv6 设置更改为 true。

  • 2) 更改主机文件中的 localhost 设置(所有浏览器)

我想到了一个想法,以检查我可以在哪里以及如何干预我机器上的 IPv6 设置。我在上述消息来源中看到其中一位 cmets 说,只需将 localhost 替换为 url 中的机器名称即可解决此问题。

我很快就检查并发现禁用我的 IPv6 localhost 查找与直接在 Firefox 中禁用 IPv6 的效果相同。

您需要做的基本上是在您的主机文件中注释/删除此特定行:

#::1             localhost

注意:::1 表示法相当于 IPv6 的 IPv4 127.0.0.1 查找地址。

我相信第二种解决方案可能更适合一般不想禁用 IPv6 的用户,而第一种解决方案可能更适合所有其他在日常工作中仍然不使用 IPv6 的用户。

【讨论】:

  • @IanDevlin 它正在工作,但我会编辑问题以包含它以防它再次中断。
【解决方案2】:

我遇到了同样的问题:在 64 位 Windows 7 上使用 IIS 7.5 和 4GB RAM 的 Core 2 Duo 和 3 个仅运行 1 个网站的应用程序池进程,网站性能极其缓慢。这是我为使速度恢复到 IIS 所做的工作,问题已解决...

按照微软在 IIS.net 上的指示,我的窍门是使用 32 位工作程序运行 IIS,您可以在此处阅读:

http://learn.iis.net/page.aspx/201/32-bit-mode-worker-processes/

提供了简单的解决方案(我不想在这里重写)...您可以从 Windows 命令提示符运行 1 行命令,也可以从 Windows PowerShell 运行 1 行命令。我只是从命令行运行它(确保以管理员身份打开命令行或 PowerShell -- 右键单击​​ > 以管理员身份运行)。

谢谢, 马蒂·麦吉

【讨论】:

  • 我不知道你为什么要这样做,但你确定不是因为 IPv6 吗?这是一个已知的错误。
  • 我只知道 IIS.net 网站建议 IIS 在 64 位 Windows 7 上使用 32 位工作程序,如链接所述。我完全不知道它是否与 IPv6 有关。我所知道的是,我在本地机器上运行本地站点,而 IIS 在 64 位处理器上非常慢,而在 32 位处理器上速度非常快。如果有帮助的话——我不必对 64 位 Windows 2008 Server 执行此操作,因为 IIS 64 位工作人员在此操作系统上运行得很好。 Windows 7 对我来说是另一回事。
  • 但是您是否尝试过像接受的答案中所说的那样禁用 ipv6?
【解决方案3】:

您可以尝试将多个进程作为应用程序池运行:

  • 打开 IIS
  • 点击应用程序池
  • 右键单击您的应用程序的应用程序池 并点击高级设置
  • 找到 “最大工作进程”和更新 它为 3(或进程数 您想允许运行)。

【讨论】:

  • 将其更新为 3... 没有任何变化.... 似乎“开始加载”页面需要一段时间... 我的意思是,我单击刷新并停留几秒钟“等待本地主机”......然后当它得到响应时,它会正常加载整个页面......
  • 听起来每个请求都在重新激活服务。检查服务保持活动超时设置为零。
  • 这是一个非常糟糕的建议。上周我在管子上看到了这种类型的评论,因为我一直在调整我自己的应用程序的性能。此应用程序池设置的命名非常糟糕。它应该是两个名为:'Use Web Garden'(逻辑)和'Set Number of Web Garden Nodes'(number > 1)的设置。您想在几乎没有现实世界的用例中使用 Web Garden。 blogs.msdn.com/b/david.wang/archive/2006/03/14/…
  • 感谢您的信息。 Christopher - 总是乐于学习 :) 我会把它留在这里以供将来参考。
【解决方案4】:

我知道该操作正在运行 IIS 7.5,这可能不适用于他,但我发布此内容可能有助于其他运行 IIS Express 8.0 的人。我遇到了同样的问题,没有任何 IPv6 或主机文件更改对我有用。按 F5 刷新本地主机上的 js 更改后,我的 asp.net MVC4 项目真的很慢。它发生在所有浏览器上——Chrome、FF 和 IE。最终我发现 IIS Express 8.0 在提供 js 文件时非常慢,而且似乎是一个错误。如果我在命令行上运行 iisexpress 并按 F5,我可以看到每个 js 文件需要 4 或 5 秒才能加载。

我最终卸载了 IIS 8.0 并安装了 IIS express 7.5,问题立即得到解决。以下是我遵循的步骤:

  • 卸载 IIS express 8.0
  • 删除 IISExpress 文件夹(在 Win 7 上它位于 My Documents\IISExpress 中)
  • 安装 IIS express 7.5 (Link to IIS Express 7.5 download)

IIS Express 8.0 似乎与 VS 2012 一起安装,因此如果您有新安装或可能有服务包更新,这可能会升级以前的 IIS Express 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多