当前位置: 代码迷 >> 综合 >> Nodejs: redis客户端报错 Redis connection gone from end event
  详细解决方案

Nodejs: redis客户端报错 Redis connection gone from end event

热度:11   发布时间:2024-02-02 15:36:35.0

错误的stack trace:

Error: Error: Redis connection gone from end event.at RedisClient.flush_and_error (/server/node_modules/redis/index.js:142:13)at RedisClient.connection_gone (/server/node_modules/redis/index.js:475:10)at Socket.<anonymous> (/server/node_modules/redis/index.js:103:14)at emitNone (events.js:111:20)at Socket.emit (events.js:208:7)at endReadableNT (_stream_readable.js:1064:12)at _combinedTickCallback (internal/process/next_tick.js:139:11)at process._tickCallback (internal/process/next_tick.js:181:9)

这个错是在客户端正在执行命令时,由服务端主动断开连接造成的,redis客户端在接收到服务端发来的FIN包后触发socket.end事件,然后调用“self.connection_gone("end");在connection_gone函数里会重新尝试建立连接。

function RedisClient(stream, options) {...this.stream.on("end", function () {self.connection_gone("end");});...
}

在报错时点上,服务端会有对应日志,例如:

2020/07/30 02:14:22 session.go:84: [INFO] session [0xc835e88400] closed: {"ops":1,"create":1596044662,"lastop":1596044662,"remote":"10.1.8.24:61831"}, error: read tcp4 10.1.8.43:19000->10.1.8.24:61831: i/o timeout
2020/07/30 02:14:22 session.go:84: [INFO] session [0xc835e88500] closed: {"ops":1,"create":1596044662,"lastop":1596044662,"remote":"10.1.8.24:43324"}, error: read tcp4 10.1.8.204:19000->10.1.8.24:43324: i/o timeout
2020/07/30 02:14:23 session.go:77: [INFO] session [0xc83b7f7800] create: {"ops":0,"create":1596046463,"remote":"10.1.8.24:44257"}
2020/07/30 02:14:23 session.go:77: [INFO] session [0xc83b7f7900] create: {"ops":0,"create":1596046463,"remote":"10.1.8.24:25750"}

 

  相关解决方案