【发布时间】:2012-12-27 10:13:25
【问题描述】:
当我的 MongoDB 连接空闲几分钟后,下一个请求以错误结束。从mongo 命令行客户端,它看起来像这样:
> db.users.find()
Sat Jan 12 23:42:35 Socket recv() errno:54 Connection reset by peer 107.22.25.25:47207
Sat Jan 12 23:42:35 SocketException: remote: 107.22.25.25:47207 error: 9001 socket exception [1] server [107.22.25.25:47207]
Sat Jan 12 23:42:35 DBClientCursor::init call() failed
Sat Jan 12 23:42:35 query failed : chowology.users {} to: ds047207.mongolab.com:47207
Error: error doing query: failed
Sat Jan 12 23:42:35 trying reconnect to ds047207.mongolab.com:47207
Sat Jan 12 23:42:35 reconnect ds047207.mongolab.com:47207 ok
我发现 MongoHQ 和 MongoLab 的沙盒实例存在问题。
由于重新连接,下一个请求正常进行。这是我的网络应用程序中的一个问题,因为几分钟不活动后,在网络请求期间会出现此错误。有两件事让我感到惊讶:
- MongoDB 连接如此频繁且频繁地被破坏,并且
- 驱动程序只是引发异常,而不是在重新连接后自动重试(我正在使用 connect-mongo,它使用 mongoose,而后者又使用 node-mongodb-native)。
这是其他人的经历吗?这个应该怎么处理?如果应用程序开发人员将他们的数据库操作包装在一些重试异常处理的废话中,我会感到惊讶。
【问题讨论】:
标签: node.js mongodb mlab node-mongodb-native