Среда Ubuntu (Amazon Sao Pablo): Узлы: v10.15.3 Mongoose: v5.4.17
Db Atlas - набор реплик (Amazon Sao Pablo): mondoDb: 4.0
В какой-то момент Mongoose теряет соединение, и с этого момента он начинает зацикливаться, отключаться, повторно подключаться, отключаться, повторно подключаться ..
Мне нужно перезапустить приложение nodejs, чтобы оно заработало.
Iпереписали все обработчики подключений, просто для регистрации событий.Я уезжаю из Лунного двора, чтобы управлять воссоединениями.Это мой конфиг.Я играл с таймаутом, значениями useNewUrlParser, а также с пулом соединений.Ничего не изменилось.Через несколько дней мой prod env выходит из строя.
mongo: {
url: 'mongodb+srv://user:password@cluster.mongodb.net/xxxx?retryWrites=true',
options: {
useNewUrlParser: true,
socketTimeoutMS: 60000
}
}
mongoose.connection.on('connecting', function() {
console.log(`MongodDB event CONNECTING - Connecting to Mongo ...`);
});
mongoose.connection.on('error', function(err) {
console.log('MongodDB event ERROR - Could not connect to MongoDB');
console.error(err);
sendEmail(`MongoDB event ERROR on ${mongoose.connection.host} ${err.message}`);
});
mongoose.connection.on('disconnected', function(err) {
console.log('MongodDB event DISCONNECTED - Lost MongoDB connection...');
sendEmail(`MongoDB event DISCONNECTED from ${mongoose.connection.host}`);
});
mongoose.connection.on('connected', function(e) {
console.log(
`MongoDB event CONNECTED on ${mongoose.connection.host} - DB: ${
mongoose.connection.name
}. (Mongoose ${mongoose.version})`
);
});
mongoose.connection.on('reconnected', function() {
console.log(
`MongoDB event RECONNECTED on ${mongoose.connection.host}. (Mongoose ${
mongoose.version
})`
);
sendEmail(`MongoDB reconnected to ${mongoose.connection.host}`);
});
mongoose.connection.on('fullsetup', function(e) {
console.log(
`MongoDB event FULLSETUP on ${mongoose.connection.host}. (Mongoose ${mongoose.version})`
);
sendEmail(`MongoDB event FULLSETUP to ${mongoose.connection.host}`);
});
mongoose.connection.on('all', function(e) {
console.log(
`MongoDB event ALL on ${mongoose.connection.host}. (Mongoose ${mongoose.version})`
);
sendEmail(`MongoDB event ALL to ${mongoose.connection.host}`);
});
2019-04-07 01:39 +00:00: MongodDB event DISCONNECTED - Lost MongoDB connection...
2019-04-07 01:40 +00:00: MongoDB event CONNECTED on xxxxx. (Mongoose 5.4.17)
2019-04-07 01:40 +00:00: MongoDB event RECONNECTED on xxxxx. (Mongoose 5.4.17)
2019-04-07 01:42 +00:00: MongodDB event DISCONNECTED - Lost MongoDB connection...
2019-04-07 01:45 +00:00: MongoDB event CONNECTED xxx. (Mongoose 5.4.17)
2019-04-07 01:45 +00:00: MongoDB event RECONNECTED on xxxx. (Mongoose 5.4.17)
2019-04-07 01:47 +00:00: MongodDB event DISCONNECTED - Lost MongoDB connection...
ngoDB event CONNECTED on xxxxxx. (Mongoose 5.4.17)
2019-04-07 01:50 +00:00: MongoDB event RECONNECTED on xxxxxx. (Mongoose 5.4.17)
2019-04-07 01:52 +00:00: MongodDB event DISCONNECTED - Lost MongoDB connection..
у нас не было этой проблемы при использовании локального экземпляра базы данных (без реплики).Я не уверен, что мангуста может обрабатывать реплики соединений.Служба поддержки Mongo Atlas рекомендует использовать официальный драйвер mongodb для nodejs.