根据以下内容,在尝试通过HTTP下载文件时,为什么我可能会出现大量“挂起”的想法?
此时,我的服务器似乎有一些时髦的东西,它正在抛出这些错误,或者这只是正常的网络行为,我需要使用(或写入)对故障更具弹性的客户端。
有什么想法吗?
答案 0 :(得分:20)
也许您的问题是与您在回复评论中推测的ISP的低级别网络问题。我遇到了类似IIS的问题,日志文件中出现了一些神秘的200 0 64行,这就是我发现这篇文章的方法。为了记录,这是我对sc-win32-status = 64的理解;如果我错了,我希望有人可以纠正我。
答案 1 :(得分:4)
我花了两周的时间来调查这个问题。对我来说,我遇到了间歇性随机请求过早终止的情况。这导致IIS日志的状态代码为200,但win32-status为64。
我们的基础架构包括两个处于HA模式的NetScaler负载均衡器后面的Windows IIS服务器。
在我的特定情况下,问题是NetScaler有一个名为" Intergrated Caching"打开(http://support.citrix.com/proddocs/topic/ns-optimization-10-5-map/ns-IC-gen-wrapper-10-con.html)。
禁用此功能后,请求中断停止。该网站运作正常。我不确定这是怎么或为什么会导致问题,但确实如此。
如果您使用代理或负载均衡器,请对其已启用的功能进行一些调查。对我来说,原因是客户端和服务器之间的中断请求。
我希望这种解释至少会节省别人的时间。
答案 2 :(得分:1)
花了三天时间。 这是超时设置为4秒(curl php请求)。 解决方案是增加超时设置:
//curl_setopt($ch, CURLOPT_TIMEOUT, 4); // times out after 4s
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // times out after 60s
答案 3 :(得分:0)
您必须使用wirehare或网络监视器来收集有关此问题的更多数据。我想。
答案 4 :(得分:0)
我建议您将Fiddler放在服务器和下载客户端之间。这应该揭示Firefox和其他客户之间的差异。
答案 5 :(得分:0)
检查来自服务器的标头,特别是内容类型和内容长度,您的客户端可能无法识别二进制文件的格式并在等待从未到来的字节时挂起,或者可能它们关闭了底层TCP连接,可能导致IIS记录win32状态64.