mongoose的报错:timed out 和 socket closed 有什么区别?分别在什么情况下出现?
最近生产环境中发现一个读取数据的接口返回时间过长。
项目使用的是 nodejs + mongodb
开发使用的依赖:
"dependencies": {
"express": "2.5.10",
"iconv-lite": "^0.4.13",
"ioredis": "^1.15.1",
"log4js": "^0.6.35",
"mongoose": "^4.4.13",
"node-schedule": "~1.0.0",
"node-xlsx": "^0.4.0",
"superagent": "3.8.2"
}
查看日志的时候,发现报错信息是:
我们猜想是由于网络原因,导致服务于数据库链接问题,所以我们用类似的环境想复现此为问题。
复现的过程是用 wrk 工具连续访问用一个接口一段时间,在此时间内设置服务器防火墙,模拟断网情况。
结果得到的报错信息如下:
问题如题:
- mongoose的报错:timed out 和 socket closed 有什么区别?
- 分别在什么情况下出现?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的理解是
timed out
属于被动关闭,服务器不响应也不理你,socket closed
属于主动关闭,服务器直接就拒绝了。mongoose
监听timedout
和close(had_error)
只是为了区分错误类型,最终都执行了socket.end()
。