数据库连接(暂时写在app.js)
var options = { server: { poolSize: 100, auto_reconnect: true, keepAlive: 10 } } var db = mongoose.connect(settings.MONGODB_URL,options);
问题:
1.批量插入数据,一段时间后就会出现:
MongoError: connection 95 to xxx.xxx.xxx timed out
2.当出现上面错误的时候,所有相关的数据库操作就不运行了,是程序与数据库的连接断了吗? 是数据库连接设置的不对,还是可能是数据库的问题?
3.当我进行高并发的ab测试后,也会出现上面2的现象,是什么原因呢?是连接池相关设置的不正确吗?
首先要注意连接池问题,
mongoose.connect
只应该调用一次,其返回的对象维护了连接池,如果反复调用则会不断地打开和关闭连接,非常影响性能。确认之后要看一下你给的压力有多大,是否已经占用完了所有可用的资源,可以看一下mongodb的log,有多少同时打开的连接。也可以看一下机器的资源剩余情况。