2013-03-28 48 views
4

我在Heroku和Mongolab上有一个应用程序。我使用node.js和猫鼬。 Heroku经常记录我的内存消耗超过了他们的限制,并且部分内存被交换到了硬盘。我不时与Mongolab数据库断开连接,所以我的整个应用程序停机约5分钟。一开始我有几个Heroku超时。之后,Heroku重新启动我的应用程序,并且出现错误:无法连接[ds057900.mongolab.com:57900]多次。几次重启后,它会备份。 Mongolab团队告诉我,他们身边的一切都好。 Heroku团队告诉我,这可能是内存问题。一次完全重新启动不足以启动我的应用程序。可能它是我的应用程序中的内存泄漏问题?node.js和mongodb - 错误:无法连接到[ds057900.mongolab.com:57900]

+0

你解决了你的问题吗?如果您使用的是猫鼬,请参阅[this](http://mongoosejs.com/docs/connections.html#keepAlive) – eAbi

+1

在使用Mongoose进行奇怪行为之后,我将Heroku切换到EC2,Node.js转到并开始使用我的次要Mongo实例。与Mgo库一起去似乎更稳定。很多事情发生了变化,但我在切换后发现的一件有趣的事情是,在非索引字段上使用$ regex是您的应用程序的自杀。永远不要这样做。即使您的连接已经死亡,MongoDB似乎也会对所有查询进行排队并处理它们。如此简单的服务器重启是不够的。 –

+0

并没有清除队列的解决方案?在很多情况下,这真的会是一款应用程序的自杀。我不认为这是最理想的。我知道您可以在DEV MongoDB实例上进行基准测试并执行“重大错误”,但这些错误仍可以通过您的生产应用程序传播。也许可以通过处理只写任务以安全的方式重新启动数据库。或者换一种方式... – eAbi

回答

0

好像你在用MongoDB或MongoHQ租用的任何数据库。