3 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
這似乎意味著您的節(jié)點(diǎn)服務(wù)器與MongoDB實(shí)例的連接在嘗試寫入時(shí)已中斷。
看一下產(chǎn)生該錯(cuò)誤的Mongo源代碼
Mongos.prototype.insert = function(ns, ops, options, callback) {
if(typeof options == 'function') callback = options, options = {};
if(this.s.state == DESTROYED) return callback(new MongoError(f('topology was destroyed')));
// Topology is not connected, save the call in the provided store to be
// Executed at some point when the handler deems it's reconnected
if(!this.isConnected() && this.s.disconnectHandler != null) {
callback = bindToCurrentDomain(callback);
return this.s.disconnectHandler.add('insert', ns, ops, options, callback);
}
executeWriteOperation(this.s, 'insert', ns, ops, options, callback);
}
這似乎與注釋中提到的Sails問題無關(guān),因?yàn)槲窗惭b任何升級來加速崩潰或“修復(fù)”

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
我知道Jason的答案已被接受,但是Mongoose遇到了同樣的問題,并且發(fā)現(xiàn)托管我的數(shù)據(jù)庫的服務(wù)建議應(yīng)用以下設(shè)置,以使Mongodb的連接在生產(chǎn)中保持活動(dòng)狀態(tài):
var options = {
server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }
};
mongoose.connect(secrets.db, options);
我希望此回復(fù)可以幫助其他人遇到“拓?fù)湟驯黄茐摹卞e(cuò)誤。

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
此錯(cuò)誤是由于mongo驅(qū)動(dòng)程序出于任何原因斷開連接(例如,服務(wù)器已關(guān)閉)。
默認(rèn)情況下,貓鼬會(huì)嘗試重新連接30秒鐘,然后停止重試并永久拋出錯(cuò)誤,直到重新啟動(dòng)為止。
您可以通過在連接選項(xiàng)中編輯這兩個(gè)字段來更改此設(shè)置
mongoose.connect(uri,
{ server: {
// sets how many times to try reconnecting
reconnectTries: Number.MAX_VALUE,
// sets the delay between every retry (milliseconds)
reconnectInterval: 1000
}
}
);
- 3 回答
- 0 關(guān)注
- 1122 瀏覽