我该怎么解释Heroku H18错误?

Kri*_*fer 61 heroku

我们在日志中看到了很多错误H18(请求中断).如何解释这些,因为在所有情况下sock = client我假设它是断开连接的客户端.因此忽视这些是否安全?

cat*_*sby 55

这通常表示用户的网络已断开连接(例如,这种情况发生在移动用户的某些频率上),或者最终用户关闭了他们的浏览器或类似网站(例如,按下停止,转到不同的页面等).

您可以放心地忽略那些被标记为"sock = client"本质上是客户端的那些,但可能想要调查那些被服务器端关闭的那些("sock = server").

  • 如果您收到大量的"客户端"错误,例如Meteor应用程序,该怎么办?(我看到的不仅仅是有机关闭标签或丢失信号信号的人数.)是否还有其他可能导致此错误的事情? (9认同)
  • 这不再是事实!不要忽略这些。请参阅下面的详细信息。 (2认同)

Ben*_*don 46

编辑(2015年8月10日):我对H18错误的回答是过时的.Heroku 改变了H18错误的行为,使它们比以前更具体(和严肃).这个答案现在更正确.


H18错误

我最近向Heroku支持了大量的H18错误(有时每小时3-4个)我的应用程序正在接收并在新的Heroku仪表板的Metrics部分浮出水面(上面的屏幕截图).我在这个帖子中引用了catsby的回复,并要求确认它们是否实际上不可操作.这是我从Heroku支持收到的回复:

我刚刚在你的应用程序上浏览了最后24小时的H18.他们都是sock = client并且看着User-Agent我看到很多常见的罪魁祸首.大多数移动浏览器以及我见过其他应用程序的最新Chrome也在几天前也有问题.除非您看到某个特定URL或用户的模式,否则通常只是网络问题.

[这些H18错误是]不可行的并非总是如此.有些应用确实关心它,有时它也可能意味着客户端崩溃而不是网络错误.浏览器会不时崩溃,但特别是移动浏览器可能非常脆弱.如果某个应用程序使用大量资产并触发"页面无响应"错误,您可能会看到H18中的峰值.在这种情况下,有时你可以做些什么.其他应用程序完全在有线网络中进行维护,并且永远不会期望它,在这种情况下可能会出现故障的交换机或防火墙.为了透明起见,我们仍然希望报告这些错误,因为无法判断它们是否可操作.

总而言之,大多数情况下,如果它们是sock=client错误,您可以忽略它们,但这确实表明客户端正在断开连接,这可能表明存在真正的问题,具体取决于您的应用程序如何与其客户端联网(例如移动或非常糟糕的网络连接). ..但可能你可以放心地忽略它们.


del*_*rox 30

仅供参考:最佳答案不再正确.他们在写作的时候,但情况发生了变化.H18现在总是sock = server.Heroku为sock = client添加了一个新的错误代码H27.

详情请访问:https://devcenter.heroku.com/changelog-items/662

H18现在应该更加认真对待,因为它们肯定是您服务的一个问题.通常可以安全地忽略H27,因为它们是客户端的问题.


Wil*_*ell 11

还有另一种情况会导致此错误,但Heroku记录

如果您的服务器响应请求并关闭连接而不读取请求正文,则路由器将响应 H18 错误。Heroku 路由器日志将显示sock=backend.

在这种情况下,您的服务器在 HTTP 规范方面没有做错任何事情。这是 Heroku 路由器的一个错误。

我就此联系了 Heroku 技术支持,他们确认了这个问题。它将在他们正在实施的路由器的新版本中修复。

解决方法是始终确保在关闭连接之前在后端服务器上读取请求正文。