我正在使用在 XP 上使用 IIS 5.1 的商业应用程序。该应用程序定期返回 IIS 错误“此时访问该网站的人太多”。这是因为 Microsoft 人为地限制了 Windows XP 下 IIS 5.1 的连接数(10),但在这种情况下,实际上只有一个用户(尽管一次打开了几个选项卡)。Microsoft 建议您通过关闭该特定网站的 HTTP Keep-Alives 来减少此问题:
http://support.microsoft.com/kb/262635
如果您在 Windows 2000 Professional 上使用 IIS 5.0 或在 Microsoft Windows XP Professional 上使用 IIS 5.1,请在网站属性中禁用 HTTP 保持活动。执行此操作后,10 个并发连接的限制仍然存在,但 IIS 不会为不活动用户维护连接。
我可能会这么做;但是,我担心性能下降。但是,我还注意到 IE8 处理这个问题的方式似乎与 IE7 不同。默认情况下,IE6 和 IE7 使用 2 个持久连接,而 IE8 使用 6 个。也许在这种情况下,IE8 本身会生成多个连接以尝试提高速度,但这些额外的连接会压垮 XP 上人为限制的 IIS 5.1?假设是这种情况,是否有 Internet Explorer 选项、注册表设置或策略可以设置强制 IE8 在持久连接方面表现得像 IE7?我不会为所有用户设置这个,但对于使用此应用程序的少数用户来说,它可能会解决他们的间歇性问题,直到应用程序可以在 Windows Server 2008 上重新托管。谢谢。
答案1
禁用保持活动连接无疑会减少此问题,因为它会阻止浏览器在最后一次访问后保持连接打开一段时间。
但这肯定不会解决问题。如果只有两个用户使用 IE8 打开包含许多子对象(图像、脚本文件、css 文件)的页面,那么您将达到 10 个连接的限制。根据您的应用程序和用户数量,这种情况可能不太可能发生,但您拥有的并发用户会话越多,发生这种情况的可能性就越大,因此您应该尽快转向专为服务器使用的 Windows 版本(因此不会人为禁用自身)。
如果您的用户是本地用户或者正在使用许多连接,则禁用保持连接不会对性能产生重大影响。保持连接通过减少 TCP 握手来降低网络延迟的影响,但如果您的客户端是本地用户,则每个连接无论如何都不会花费很长时间来启动。如果您的用户相对于应用程序而言非常遥远,因此他们与应用程序之间的往返延迟相当大,那么差异将更加明显 - 在关闭保持连接的情况下,跨大西洋往返时间超过 100 毫秒对性能的影响将远远大于同一网络上主机之间往返时间不到 1 毫秒的影响。