У меня есть приложение Node.js, которое подключается один раз (к удаленному db) при запуске приложения и использует эту переменную соединения для всех операций.MongoDb отключает соединение после простоя около 15 минут
MongoClient.connect(mongoConnStr, connOpts, function(err, db) {
...
}
connOpts
является:
var connOpts = {
server: {
socketOptions: {
autoReconnect: true,
keepAlive: 1
}
}
};
Так он соединяет хорошо, но по запросу после простоя в течение ~ 15mins, он висит на ~ 30secs, а затем бросает следующее сообщение об ошибке:
/home/me/Desktop/turbo/node_modules/mongodb/lib/utils.js:97
process.nextTick(function() { throw err; });
^
MongoError: server myapp.cloudapp.net:27017 sockets closed
at null.<anonymous> (/home/me/Desktop/turbo/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:301:47)
at g (events.js:199:16)
at emit (events.js:110:17)
at null.<anonymous> (/home/me/Desktop/turbo/node_modules/mongodb/node_modules/mongodb-core/lib/connection/pool.js:101:12)
at g (events.js:199:16)
at emit (events.js:110:17)
at Socket.<anonymous> (/home/me/Desktop/turbo/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:139:12)
at Socket.g (events.js:199:16)
at Socket.emit (events.js:107:17)
at TCP.close (net.js:485:12)
Я знаю, что периодическое пинирование db должно решить проблему, но, возможно, некоторые настройки конфигурации, которые мне не хватает, сделают это?
Есть ли у вашего сервера mongodb брандмауэр или маршрутизатор, как nginx? – zag2art
Да, есть машина с nginx, выполняющая обратное проксирование, и есть еще одна машина, на которой установлен MongoDb с брандмауэром. – Acute
фактически оба из них имеют брандмауэры – Acute