基于以下内容,在尝试通过HTTP下载文件时,为什么我可能会出现大量"挂起"的想法?
服务器是IIS 6
正在下载的文件是二进制文件,而不是网页
几个客户端挂起,包括TrueUpdate和FlexNet Web更新包,以及使用响应流执行基本HttpWebRequest/HttpWebResponse逻辑和下载的自定义.NET应用程序
成功为200 0 0时的IIS日志文件签名(sc-status sc-substatus sc-win32-status)
对于失败,错误签名为200 0 64
sc-win32-status of 64是"指定的网络名称不再可用"
我可以在URL上指向firefox并且每次都成功下载(也许一些重试逻辑发生在引擎盖下)
在这一点上,似乎我的服务器有一些时髦的东西,它正在抛出这些错误,或者这只是正常的网络行为,我需要使用(或写入)对故障更具弹性的客户端.
有什么想法吗?
也许您的问题是与您在回复评论中推测的ISP的低级别网络问题.我遇到了IIS一个类似的问题,出现在日志文件中,这是我发现这个职位某种神秘的200条0 64线.为了记录,这是我对sc-win32-status = 64的理解; 如果我错了,我希望有人可以纠正我.
sc-win32-status 64表示"指定的网络名称不再可用".
IIS将最终响应发送到客户端后,它会等待来自客户端的ACK消息.
有时,客户端将重置连接,而不是将最终的ACK发送回服务器.这不是一个优雅的连接关闭,因此IIS记录"64"代码以指示中断.
当他们用它做,以释放,而不是把它留在TIME_WAIT/CLOSE_WAIT套接字许多客户将重置连接.
与个人客户相比,代理人可能更倾向于这样做.
我花了两个星期来调查这个问题。对我来说,我遇到的情况是间歇性随机请求被过早终止。这导致IIS日志的状态代码为200,但win32状态为64。
我们的基础架构在HA模式下的两个NetScaler负载平衡器之后包括两个Windows IIS服务器。
在我的特定情况下,问题在于NetScaler启用了一项名为“集成缓存”的功能(http://support.citrix.com/proddocs/topic/ns-optimization-10-5-map/ns-IC- gen-wrapper-10-con.html)。
禁用此功能后,请求中断就停止了。网站运行正常。我不确定这是什么原因或原因,但是确实存在。
如果您使用代理服务器或负载平衡器,请对它们已启用的功能进行一些调查。对我来说,原因是客户端和服务器之间的某些请求中断。
我希望这种解释至少可以节省别人的时间。