这真是一个令人费解的问题。
我有一个在 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) 调制解调器连接时,我有时会遇到发送数据的问题。当我连接到良好的上行链路时,相同的网站可以完美运行。