在特定网络路由上发布请求间歇性失败〜wtf?

在特定网络路由上发布请求间歇性失败〜wtf?

这真是一个令人费解的问题。

我有一个在 Passenger 上运行的 Rails 应用程序。

我已经测试了几个不同客户端的服务(通过 curl),发现它们运行良好。除了一个特定的客户端(恰好是该客户端),我们观察到 POST 请求间歇性失败(大约 60-70% 的时间)。

失败的请求以 500 响应的形式显示在 Apache 访问日志中,但应用程序代码甚至没有被调用。

curl 报告如下内容:

响应是:

Done waiting for 100-continue
< HTTP/1.1 100 Continue
* Recv failure: Connection was aborted
* Closing connection #0
curl: (56) Recv failure: Connection was aborted

还通过 Charles Proxy 观察到“网关超时”错误消息。

发送更多数据时,失败率似乎会更高。

我对这个错误感到很困惑,因为它只出现在特定客户端上。我只能猜测是网络路由中的某些东西导致了这个问题,但不知道该如何修复它。

以前有人见过类似的事情吗?

答案1

我的猜测是,客户端的上行链路太差,数据 POST 永远无法完成。由于数据从未发送,应用程序永远无法收到数据。

当我通过移动 (GSM) 调制解调器连接时,我有时会遇到发送数据的问题。当我连接到良好的上行链路时,相同的网站可以完美运行。

相关内容