Heroku H18 503错误 "请求中断"

7
我看到了很多这样的情况,我知道它们的意思,所以我不明白为什么会发生。它非常不一致,并且似乎不是超时问题。
相关内容:
- PHP/Laravel/Postgres Heroku - 强制使用SSL - 将/路由到/anotherroute - 我无法复制任何客户端自己的问题 - 路由不总是相同的,有时只是加载资产 - 我没有看到任何应用程序错误报告 - sock=client - 服务时间始终小于1秒
一些日志数据:
Oct 29 18:22:12 myapp-web-production heroku/router: sock=client at=error code=H18 desc="Request Interrupted" method=GET path="/aroute" host=... request_id=... fwd="##.##.##.###" dyno=web.1 connect=2ms service=34ms status=503 bytes=3816 Oct 29 18:22:13 myapp-web-production heroku/router: sock=client at=error code=H18 desc="Request Interrupted" method=GET path="/aroute" host=... request_id=... fwd="##.##.##.###" dyno=web.1 connect=1ms service=538ms status=503 bytes=3822 Oct 29 18:22:14 myapp-web-production heroku/router: sock=client at=error code=H18 desc="Request Interrupted" method=GET path="/aroute" host=... request_id=... fwd="##.##.##.###" dyno=web.1 connect=1ms service=406ms status=503 bytes=13927
我被卡住了。任何帮助将不胜感激。
1个回答

8

我理解sock=client属性表示客户端在服务器响应前已经断开连接。我们可以通过将10秒的人工延迟添加到处理程序中,并在服务器响应之前请求端点并关闭它来重现这种情况,例如,在web浏览器中。

我们只需从日志中过滤掉所有带有sock=client的H18错误。


1
这也是我从Heroku得到的反馈。只是有点惊讶看到有这么多客户端断开连接,因为响应时间从未超过1000ms。谢谢你的回答。 - Nick
@Nick:我也对我们这种情况下的数量感到惊讶。你有没有深入了解过这个问题,还是只是接受并继续前进了?我在想如何更深入地挖掘这个问题... - hendrikbeck
@hendrikbeck 我刚刚接受了它,因为我们从用户那里没有收到任何问题报告,也没有亲眼见过任何问题。如果我要花时间进行调查,我会运行一个网络诊断程序,比如“Charles”,限制连接并跟踪日志以尝试重现问题。这可能只是分析(谷歌、woopra等)在移动网络丢失时轮询断开连接的简单问题。 - Nick
有没有办法在代码中解决这个问题,以便应用程序会重试请求?这在我的登录API上偶尔发生,我希望应用程序在发生这种情况时自动重试。 - oky_sabeni
@Yko 你应该能够在客户端上检测到断开连接,然后从那里重试。如果这确实是客户端问题,那么服务器将无法重试任何操作 - 客户端必须这样做。 - Riley Lark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接