MongoDB连接超时(Azure)

时间:2013-05-01 17:08:39

标签: node.js mongodb azure

我在Windows Azure上安装了一个带有MongoLab插件的应用程序,我遇到了一个问题,即在部署应用程序后应用程序运行良好,但是在几分钟不活动的时间后,我得到了一个数据库错误:

  

没有副本集主可用于使用ReadPreference PRIMARY的查询

在我重新启动相同模式返回的网站之前,此错误不会消失 - 在错误返回时几分钟闲置几分钟

我的基本应用代码:

mongoConnect(process.env.CUSTOMCONNSTR_MONGOLAB_URI, {
server: {
    auto_reconnect: true,
    socketOptions: {
        socketTimeoutMS: 120000,
        keepAlive: 1
    }
},
replSet: {
    socketOptions: {
        socketTimeoutMS: 120000,
        keepAlive: 1
    }
}
}).then(function (db) {
    //app configure ...

    http.createServer(app).listen(app.get('port'), function () {
        console.log("Express server listening on port " + app.get('port'));
    });
});

* mongoConnect是mongoclient.connect的简单“promisified”功能

我理解这是最佳做法,我正在建立与db的一个连接,然后为所有请求重用该db对象。通过阅读https://support.mongolab.com/entries/23009358-Handling-dropped-connections-on-Windows-Azure之类的内容,我将套接字超时设置为2分钟,以防止任何防火墙过早杀死套接字并自动重新连接为true,以便重新连接,但这两种设置都不能解决问题。

0 个答案:

没有答案