![]() |
1
10
我们在一个与你相似的案例中发现了这些。通常在高负载下,不容易在测试中重现。还没有修好,但这是我们走过的步骤。 如果是防火墙问题,我们将得到一个连接被拒绝或SocketTimeout异常。 1) 您是否能够在服务器的访问日志中跟踪这些请求-它们是否显示HTTP状态200或404或其他内容?在本例中,服务器(本例中为IIS)日志显示客户端关闭了连接,而不是服务器。所以那是个谜。 更新: 如果客户机总是得到200,那么服务器实际上已经返回了一些响应,但我怀疑响应字节大小(如果这被记录在访问日志中) 将显示与正常响应大小不同的值 为了那个请求。 如果显示的响应大小相同,则您有一个(可能不合理)条件,即服务器 实际响应正确 但是客户端没有得到响应,因为连接在两者之间的某个地方终止了。 2) 网络管理团队查看TCP/IP通信量,以确定哪个端(或中间路由器)正在终止HTTP/TCP-IP会话。一旦我们了解到哪一端终止了连接,我们就要看看原因了。有足够知识的人可以跑 snoop 3) 服务器上配置/限制的请求数是否达到最大值?这是否限制了您的连接? 4) 是否有可以丢弃请求的中间负载平衡器? 更新: 还有一件事我们想做,但没有完成,就是在客户端和服务器之间创建一个静态路由,以减少两者之间的跳数,并确保没有与网络相关的连接断开。见 http://en.wikipedia.org/wiki/Static_routing 5) 另一个建议是设置 ConnectTimeout 也不知道这些是否有更高的价值。 更新: 你可能想试试 conn.getErrorStream()
6) 也可以尝试每隔5秒在服务器上转储一组线程,以查看是否有任何线程在服务器上显示这些传入请求。 更新: 到今天为止,我们学会了处理这个问题,因为我们合计每天400000个请求中有200-300个请求失败,这是0.00075% |
![]() |
2
0
我们在服务器上使用它时也会遇到零星的超时。我们可以用两件事来解决它:
伪代码:
发生这种情况的另一个理论可能是: 在HttpURLConnection/HttpsURLConnection的文档中,可以读取以下内容:
所以现在打电话来
|
|
lfox · 如果列中不存在某个值,则停止代码执行 2 年前 |
![]() |
zaen · 将值传递到异常字符串消息中 2 年前 |
![]() |
Zephyr · 如何在双ListView选择系统上实现过滤器? 6 年前 |
![]() |
Aave · 错误数组长度的特定异常 6 年前 |