【问题标题】:ASP.NET MVC sites running very slow on LAN but works fine localhostASP.NET MVC 站点在 LAN 上运行速度非常慢,但在 localhost 上运行良好
【发布时间】:2014-11-14 09:50:11
【问题描述】:

一年多以来,我一直在为某人开发一个“内部网”站点,用于完成各种日常任务。

它是 MVC 4,预编译视图,IIS 7.5 在 Server 2012 i7 16GB RAM 上运行。

昨天突然所有局域网的机器,用Chrome或者IE,页面加载需要25-55秒之间!甚至是静态页面。我登录服务器,放大缩小,没问题? 1013 毫秒。

我安装了 Glimpse 并发布,然后在 LAN 机器上,它的故障是

  • 请求 32000 毫秒,连接 55 毫秒 ..
  • 查看 12 毫秒、10 毫秒、各种部分、..... 最后一个 25 秒。
  • 现场运行的 Ajax 响应时间为 12ms-15ms,并且 Glimpse 更新正常。
  • 一瞥 AXD 设置页面加载也很快。

我故意加载了一个页面,其中大约有 50 个部分命中 DB 50 次。这些部分符合预期。每次渲染 12-15 毫秒。但是最后一次渲染是25秒??然后加载了一个漂亮的静态页面。没有部分,但最终结果相同。 (那不是 DB,对吧?没关系,因为 IIS 无论如何都会在本地机器上执行 DB 请求,而且我知道本地运行良好)

我签入了 chrome 网络。 55 秒的等待,不是 DNS(或者至少它说不是)它只是被标记为等待。然后传输就像 200 毫秒所有其余的文件 cahced。于是我清了缓存,最初的25-55秒再一次,然后所有的JS,CSS在500ms内快速下载。

所以这不是网络问题,例如有故障或不可靠的电线。其完美的千兆全速吞吐量。

我这周没有发表任何东西。我重新启动了所有路由器和交换机、所有计算机和服务器。

  • 服务器充当域,但客户端是家庭高级版,未连接到域。
  • 由于这个 DNS 设置为 Internet 网关,并且将 DNS 设置为服务器会导致 Internet 问题,所以我只添加了一个主机“webbapp 192.168.1.1”(工作了 12 个月以上)
  • 我使用 WebMatrix 成员身份进行表单身份验证,因此这是一次连接到 MainDB 的字符串。
  • 日常事务使用连接字符串存储在 MainDB 中,但 Linq2SQL 的名称不同。
  • 然后还有 5 个其他 DB 用于搜索记录,并且只能从搜索页面中获得。
  • 我以用户身份登录到 SQL Manager。它很快。我检查了主要的数据库文件,它是 2.2GB,所以我现在清除了日志文件及其 330mb。它在本地更快,但对于 LAN 机器仍然没有变化。
  • 我回收了应用程序池。我确保超时设置高于 1 分钟,即 90 分钟
  • 它没有设置为webfarm,用户身份是默认的。我尝试了本地管理员。没有变化。
  • 我创建了一个新的应用程序池,并将其更改到那里。 LAN 机器没有变化。
  • 我重新发布了该网站,可能有一些损坏?没有。一样。
  • web.config 设置为 debug=false
  • 我删除了优化,这是我最近所做的更改。所以我只是像以前一样转储了所有的 CSS、JS 文件。这并没有改变任何东西。

我有一个眼睛资源经理。处理器甚至没有凹痕(它处于空闲状态,没有其他东西在运行或阻塞)。 HDD 几百 kb 的传输。内存充足。

我检查了向服务器发出的请求,谁知道可能有什么东西在做每秒超过 1000 个请求的 DDoS 机器?病毒什么的。没有。

  • 没有对 IIS 上发生的任何事情的请求。所以不是 DDoS。
  • 来自 IIS 的日志文件看起来不错。没有错误
  • 事件查看器,没有错误。
  • 在 IIS 中启用跟踪。什么都没发生。
  • 单独重新启动 SQL Server
  • 已禁用 AV

此问题同时影响所有机器(2014 年 12 月 11 日)(新机器、旧机器、笔记本电脑)。所以我只能怀疑 Windows 更新?铬更新?

有人和我一样经历地狱吗?我不知道还要检查什么。

【问题讨论】:

  • 试用 Red Gate 的分析器,看看时间花在了哪里。如果它没有在 IIS 中使用,并且您确实怀疑它是最近的补丁,那么 MS 只是更新了 SChannel。 support.microsoft.com/kb/2992611(这些请求是通过 http 还是 https?)
  • 谢谢,我试试看。一切都是http,服务器ipv6被禁用。我有一种直觉,感觉它与 ipv6 有关,但其他一切都很好。
  • 如果您有时间,还可以考虑使用 xperf 进行频繁的堆栈遍历,以查看操作系统和您的进程将时间花在哪里。
  • 很好地调用了 xperf,它不是我以前使用过的工具,但是……这似乎是一个很好的用例。谢谢 - 如果我在服务器上找不到问题,则表示客户端机器有问题。

标签: windows asp.net-mvc-4 iis-7.5 windows-server-2012


【解决方案1】:

花了 10 多个小时试图解决这个问题。第一次使用xperf,体验非常好,就是没发现问题。

今天早上一切正常,我根本没有做任何更改。

我怀疑网络错误。我忘记了一个开关,可能是因为它同时影响 LAN 上的所有 PC,然后同时解决所有问题。

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 2013-02-07
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多