資料庫連線(暫時寫在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,有多少同時打開的連接。也可以看一下機器的資源剩餘狀況。