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

错误的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"}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值