我每分钟大约有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)
每次迭代关闭数据库连接,仅供参考,我每次都连接到多个数据库。
重复同样的过程会产生同样的后果。
答案 0 :(得分:1)
这通常是服务器上的ulimit问题,因为您打开了太多连接,但是您需要查看mongod / mongos日志才能确定。如果是这种情况,您将看到有关无法分配资源和/或创建新线程的错误。如何解决这个问题,请看这里:
http://docs.mongodb.org/manual/administration/ulimit/
此外,根据您使用的驱动程序关闭连接可能是一个非常糟糕的主意,可能是您的问题的根本原因(特别是如果您正确设置了ulimits)。目前大多数驱动程序,包括我相信的节点都有一个连接池,可以适当地管理连接并允许重用。通过明确地关闭它们,实际上可能会导致旧连接在短期内建立起来。