【问题标题】:NodeJS - socket hang up errorNodeJS - 套接字挂起错误
【发布时间】:2015-09-13 09:09:27
【问题描述】:

我正在使用 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)

【问题讨论】:

  • 可能您的请求花费了太多时间

标签: angularjs node.js sockets


【解决方案1】:

TL;DR: 这可能是Node 触发其 GC 并冻结所有操作引起的问题,这会导致不可预知的偶发“套接字挂起”错误。

我也遇到过类似的情况。我启动了一堆包含在并行运行的 Promise 中的服务器调用,然后有一个带有 sleep 的循环,它会定期检查它们的完成情况。我观察到以下模式:

  • 调用会在一段时间内迅速完成
  • 然后出现减速
  • 然后最终出现一些“套接字挂起”错误
  • 然后服务器调用会立即继续

这种模式不断重复。我调用的服务器上的 DataDog 统计数据没有显示可能是主要原因的延迟变化,所以我的结论是 - 它是 Node 应用程序端的东西。

如果问题是由 GC 引起的——那是个坏消息,因为 GC 通常被称为“魔术”:)。你无法预测它会在什么时候以及多深。

HTH

【讨论】:

    【解决方案2】:

    是的,看起来您的后端服务器正在挂起套接字,可能是由于超时或容量问题。你能限制你发送的请求吗?使用 async 之类的库(使用 Limit 方法)可能会帮助您以简单的方式限制连接。

    【讨论】:

      猜你喜欢
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 2014-10-06
      • 2021-07-29
      • 2013-10-05
      相关资源
      最近更新 更多