【发布时间】: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