感谢所有帮助人员-我已经设法在localhost上解决了此问题,并将其部署到了实时服务器上。
这是我现在正在工作的连接代码:
var MonGO = { username: "username", password: "pa55W0rd!", server: '******.mongolab.com', port: '*****', db: 'dbname', connectionString: function(){ return 'mongodb://'+this.username+':'+this.password+'@'+this.server+':'+this.port+'/'+this.db; }, options: { server:{ auto_reconnect: true, socketOptions:{ connectTimeoutMS:3600000, keepAlive:3600000, socketTimeoutMS:3600000 } } }};var db = mongoose.createConnection(MONGO.connectionString(), MONGO.options);db.on('error', function(err) { console.log("DB connection Error: "+err);});db.on('open', function() { console.log("DB connected");});db.on('close', function(str) { console.log("DB disconnected: "+str);});
我认为最大的变化是在“连接”上使用了“
createConnection”-我以前曾经使用过,但是现在选项可能有所帮助。这篇文章对http://journal.michaelahlers.org/2012/12/building-
with-nodejs-
persistence.html很有帮助
如果说老实话,我不太确定为什么要添加这些选项(如@jareed所述),我还发现有些人在“ MaxConnectionIdleTime”方面取得了成功-
但据我所知,javascript驱动程序没有有此选项:这是我尝试复制行为的尝试。
到目前为止一切顺利-希望这对某人有帮助。
更新:2013年4月18日 注意,这是第二个具有不同设置的应用程序
现在我以为我已经解决了这个问题,但是问题又来了,最近又在 另一个应用程序上 使用相同的连接代码,这又让人头疼。困惑!!!
但是设置略有不同……
此新应用程序正在使用IISNode在Windows框上运行。 我最初并不认为这很重要。
我读到Azure上mongo可能存在一些问题(@jareed),因此我将数据库移至AWS-问题仍然存在。
因此,我再次开始使用该选项对象,对其进行了很多阅读。得出以下结论:
options: { server:{ auto_reconnect: true, poolSize: 10, socketOptions:{ keepAlive: 1 } }, db: { numberOfRetries: 10, retryMiliSeconds: 1000 }}
与我声明的原始选项对象相比,这有点受过教育。但是-仍然不好。
现在,由于某种原因,我不得不离开该Windows框(与未在其上编译模块有关)–移动起来要比花上一个星期才能使其正常工作要容易得多。
所以我将我的应用程序移至nodejitsu。 低,请看我的联系还活着! !
所以…。这是什么意思……我不知道!我所知道的是那些选项似乎可以在Nodejitsu上运行……。为了我。
我相信IISNode使用某种“永远”脚本来保持应用程序的生命。为了公平起见,应用程序不会因此崩溃而崩溃,但是我认为必须不断刷新某种“应用程序周期”-这就是它可以进行连续部署的方式(ftp代码,不需要重新启动应用程序)-也许这是一个因素;但我现在只是猜测。
当然,这一切都意味着现在还没有解决。它仍然没有解决。在我的设置中为我解决了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)