【发布时间】:2013-08-23 01:27:26
【问题描述】:
我有一个 Node.js Web 应用程序,它定期调用 MongoDB 后端的 socket.io(每 30 分钟一次)。我可以在本地运行几天没问题。我最近刚刚部署到 Heroku(免费,1 Dyno,使用 MongoLab for DB),一切都启动并运行良好。但是,当更新开始推出时,我在浏览器控制台中收到许多错误,表明更新并没有完全正确,最终(大约 3 或 4 次更新),并且总是以 30% 的 CPU 和800MB RAM(当它通常具有标称 CPU 和大约 300-400MB RAM 时)。
我使用一串承诺来确保异步数据库更新步骤以完美的顺序发生,并且它们总是在本地进行。但是 console.logs 表明应用程序出现故障,什么时候应该是不可能的,即应用程序在它所依赖的承诺解决之前继续运行。这将解释所有错误(例如未定义的变量等)。有没有人在他们的应用程序中看到类似的东西,可以建议从哪里开始寻找解决方案?像我看到的大多数故障排除问题一样,在 Heroku 上部署应用程序或启动应用程序都不是问题。该应用程序运行,连接到端口并在浏览器中出现,没有错误。只是在跑了一会儿之后,事情就变得混乱了。我很茫然。
【问题讨论】:
-
我有类似的设置(nodejs/socketio/heroku/mongodb);我正在将 MongoLab 与 Heroku 一起使用,我遇到了完全相同的问题。该应用程序在本地运行良好,但在免费的 heroku dyno 上运行非常缓慢。我必须将我的套接字会话循环调整为每秒只滴答一次,因为它无法处理正常速度,并且在使用 5 分钟以上之后,它最终会无限期地挂起,直到我刷新页面。几年前我看到你发过这个。从那以后你有没有运气,或者这只是 Heroku 的问题?
标签: node.js mongodb heroku socket.io mlab