У mongoDB есть проблемы с переподключением или я делаю это неправильно?
Я использую nodejs и mongoDB - и у меня есть некоторые проблемы с подключением.
Ну собственно "разбудить" проблемы! Он отлично соединяется - очень быстрый, и я в целом доволен результатами.
Моя проблема: Если я не использую соединение какое-то время (я говорю время, потому что период времени колеблется 5+ минут), оно, кажется, застопорилось. Я не получаю события разъединения, это просто зависает.
В конце концов я получаю ответ типа Ошибка: не удалось подключиться к [* .mongolab.com: *] - (* = маскированные значения)
Быстрый перезапуск приложения, и соединение снова здорово. Иногда, если я не перезагружаю приложение, я могу обновить его, и оно счастливо подключается.
Вот почему я думаю, что это проблемы "пробуждения".
Грубый набросок кода:
Я не включил код - я не думаю, что он нужен. Это работает (кроме отключения соединения)
Что следует отметить: Есть только одно «соединение» - я никогда его не закрываю. Я никогда не открываю.
Я использую мангуста, сокетио.
/* constants */
var mongoConnect = 'myworkingconnectionstring-includingDBname';
/* includes */
/* settings */
/* Schema */
var db = mongoose.connect(mongoConnect);
/* Socketio */
io.configure(function (){
io.set('authorization', function (handshakeData, callback) {
});
});
io.sockets.on('connection', function (socket) {
});//sockets
io.sockets.on('disconnect', function(socket) {
console.log('socket disconnection')
});
/* The Routing */
app.post('/login', function(req, res){
});
app.get('/invited', function(req, res){
});
app.get('/', function(req, res){
});
app.get('/logout', function(req, res){
});
app.get('/error', function(req, res){
});
server.listen(port);
console.log('Listening on port '+port);
db.connection.on('error', function(err) {
console.log("DB connection Error: "+err);
});
db.connection.on('open', function() {
console.log("DB connected");
});
db.connection.on('close', function(str) {
console.log("DB disconnected: "+str);
});
Я пробовал различные конфигурации здесь, например, открывать и закрывать все время - хотя, я полагаю, общий консенсус заключается в том, чтобы делать то же, что и я, с одним открытием, оборачивающим лот. ??
Я попробовал тестер подключений, который продолжает проверять состояние подключения ... даже если кажется, что все в порядке - проблема все еще возникает.
У меня была эта проблема с первого дня. Я всегда принимал MongoDB вместе с MongoLab. Проблема кажется хуже на localhost. Но у меня все еще есть проблема на Azure и теперь nodejit.su.
Как это происходит везде - это должен быть я, MongoDB или mongolab.
Между прочим, у меня был подобный опыт с драйвером PHP тоже. (чтобы подтвердить это на nodejs, хотя)
Это было бы здорово для некоторой помощи - даже если кто-то просто говорит «это нормально»
заранее спасибо
обкрадывать