我们在 IIS 6.0 上托管 WCF 服务的服务器之一上观察到以下行为:
- IIS 日志显示所用时间的值很高 (> 100000)
- HTTP 状态码是 200
- sc-win32-status 代码显示值为 64
我发现sc-win32-status 代码为 64表示“指定的网络不再可用”
最初我怀疑这可能是因为MinFileBytesPerSecond设置的限制,它设置了 HTTP.sys 在将数据从客户端发送到服务器以及从服务器返回到客户端时强制执行的最小吞吐率。但是 sc-bytes 和 cs-bytes 的值表示发送的数据量在服务通常观察到的范围内。
另请注意,WCF 服务托管在四个机器上并且是负载平衡的,但问题仅发生在其中一台服务器上。(但本质上不是在同一台服务器上)。问题也是间歇性的。
有没有其他人遇到过这个错误?关于什么可能是错的任何线索?
更新
说明:对 IIS 7.5 的观察(IIS 版本并不重要)
我能够复制该问题。在以下情况下会出现此问题:
1. WCF 服务需要很长时间才能响应
2. 客户端代理在收到来自服务器的响应之前超时。在这种情况下,它会导致客户端出现 TimeoutException。
3. 服务器一直在等待客户端的 TCP ACK,它永远不会收到。
因此超时(TCP 套接字超时(默认值:4 分钟)和 sc-win32-status 为 64
所以基本上看起来WCF代码需要很长时间才能响应并且客户端超时,我在IIS日志中观察到的只是一个症状而不是问题。