简短的介绍:
我在 Hyper-V 客户机上配置 ARR 时遇到了一个奇怪的问题。
我可以正常加载我的 DotNetNuke/ASPx 站点,但是经过一段时间不活动之后,页面就不再加载。
只有在我访问默认 IIS 站点并按下 Ctrl + F5 后,它才会恢复工作。直到我再次让浏览器处于空闲状态。
下面我描述一下场景和完整的描述:
场景:
(注意:在花了几天时间尝试找出生产设置的问题后,我已禁用规则并配置了“全部捕获”规则。它简化为这种场景,但问题是一样的。)
我有一台 d-link DSL-2750B,它将 80 年代的端口转发到反向代理服务器(Windows 2012 Std VM);
该反向代理服务器已启用 ARR,并配置了 URL 重写规则,通过使用“捕获所有规则”(*),将所有调用重定向到 Web 服务器(重新路由到其服务器场),这仅用于测试目的;
在 Web 服务器(也是一个 VM)中,我有 3 个 DotNetNuke 站点和 1 个默认 IIS 网站,只有默认 html;
所有这些站点均没有 Windows 身份验证。它们均接受匿名。
详细描述:
上述配置有效。为了使测试更可靠,我使用家用电脑通过 LogmeIn 访问公司页面:
我打开我的“主页” Web 浏览器并导航到所有站点(3 个 dnn 站点和默认 IIS 站点)。一切正常。
现在,我让 Web 浏览器处于空闲状态,或者只是继续工作,随意几分钟。
突然,当我尝试刷新或浏览网站时,页面未加载,并且 Web 浏览器一直显示“进度图标”(在 Firefox 上,为运行的绿色圆圈,紧接着灰色圆圈)。
它会持续很长时间,直到出现“连接重新启动”的消息。
无论点击“刷新”按钮多少次,它都会一直显示绿色圆圈。此外,关闭浏览器并打开新实例也无济于事。最终,几分钟后,网站恢复正常。
现在诡异的部分:如果我导航默认的 IIS 站点,并按 Ctrl+F5,我就可以正常导航到 DNN 站点!
一切运行顺利,直到几分钟后它再次卡住。
有人解决过这个问题吗?
更多信息:
在“家庭” Web 浏览器卡住的同时,“公司” Web 浏览器(请注意,在同一网络中)正常工作,通过使用 HOSTS 修改指向 ARR 服务器)。
如果我将防火墙直接转发到 Web 服务器(VM),一切似乎都运行良好。
好像有预留工作时间和预留非工作时间。它是间歇性的。
我发现绕过此问题的唯一技巧是在 Web 浏览器中加载默认的 IIS 网站。
答案1
好的。经过一天的测试,再加上朋友的帮助,我们找到了罪魁祸首:路由器。
我们刚刚用备用的旧的、性能良好的 D-Link DI-624 路由器替换了原来的路由器,现在一切运行正常。
以下是我们找到问题点的步骤:
首先,我们在论文中画出了请求从客户端到 Web 服务器的整个基础设施
然后,我们开始进行消除测试。从头到尾验证问题。首先,再次测试请求在整个基础设施中行走
之后,我们将网站移至每台服务器并进行测试:
- 从“VM Web 服务器”到“VM ARR 服务器”,并进行本地和远程测试。
- 从“VM ARR 服务器”到“Hyper-v 主机服务器”并进行本地和远程测试
对于每个网站活动,我们将防火墙指向 ARR 和 Web 服务器
通过这些测试,我们可以排除错误可能出在操作系统、Hyper-V 客户机、ARR/Rewrite,甚至我们的网络或网卡或电缆中。
因此,当我们进行测试时,当我们到达链中的最后一个环节:路由器时,我们冒着绘图的风险。
就是这样!