多个请求后,MongoDB + Nodejs数据提取失败

时间:2013-02-09 00:25:41

标签: mongodb

我每分钟大约有30,000个请求达到mongodb终点。一切似乎工作正常,直到20,000个请求,之后所有请求都失败了

  

t [object Object]。   (/home/ubuntu/node_modules/mongodb/lib/mongodb/connection/server.js:530:7)       at [object Object] .emit(events.js:88:20)       在[object Object]。 (/home/ubuntu/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:104:15)       at [object Object] .emit(events.js:70:17)       在Socket。 (/home/ubuntu/node_modules/mongodb/lib/mongodb/connection/connection.js:411:10)       在Socket.emit(events.js:67:17)       在Array.0(net.js:319:25)       在EventEmitter._tickCallback(node.js:192:41)

每次迭代关闭数据库连接,仅供参考,我每次都连接到多个数据库。

重复同样的过程会产生同样的后果。

1 个答案:

答案 0 :(得分:1)

这通常是服务器上的ulimit问题,因为您打开了太多连接,但是您需要查看mongod / mongos日志才能确定。如果是这种情况,您将看到有关无法分配资源和/或创建新线程的错误。如何解决这个问题,请看这里:

http://docs.mongodb.org/manual/administration/ulimit/

此外,根据您使用的驱动程序关闭连接可能是一个非常糟糕的主意,可能是您的问题的根本原因(特别是如果您正确设置了ulimits)。目前大多数驱动程序,包括我相信的节点都有一个连接池,可以适当地管理连接并允许重用。通过明确地关闭它们,实际上可能会导致旧连接在短期内建立起来。