NodeJS - 套接字挂起错误

时间:2015-06-26 12:03:35

标签: angularjs node.js sockets

我使用node.js向服务器发送了50多个请求。但是在20-30个请求之后,我收到了套接字挂断错误。

错误 -

    Error: socket hang up
    at createHangUpError (http.js:1472:15)
    at Socket.socketOnEnd [as onend] (http.js:1568:23)
    at Socket.g (events.js:180:16)
    at Socket.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)

2 个答案:

答案 0 :(得分:0)

是的,看起来你的后端服务器挂起了套接字,无论是由于超时还是容量。你可以限制你发送的请求吗?使用像async这样的库(使用Limit方法)可以帮助您轻松地限制连接。

答案 1 :(得分:0)

TL; DR:  这可能节点触发 GC 并冻结所有操作导致的问题,这会导致不可预测的偶然“套接字挂断”错误。< / p>

我遇到了类似的情况。我启动了一系列服务器调用,这些调用包含在并行运行的promises中,然后有一个sleep循环,定期检查它们是否完成。我观察到以下模式:

  • 电话很快就完成了一段时间
  • 然后有一个减速
  • 然后最终出现一些“socket hang up”错误
  • 然后服务器调用会立即继续

这种模式不断重复。我调用的服务器上的DataDog统计信息并未显示可能是主要原因的延迟变化,因此我的结论是 - 它是Node应用程序端的内容。

如果问题是由GC造成的 - 这是一个坏消息,因为GC通常被称为“魔术”:)。你无法预测,它的深度和深度。

HTH