为什么Meteor需要这么长时间才能在Heroku上加载我的数据?

时间:2012-12-19 05:16:14

标签: performance mongodb heroku meteor sockjs

我在Heroku(免费等级)上使用Meteor与MongoHQ。我的应用程序现在非常简单,它从一个Collection中加载了3-4个条目,但是当我将它部署到Heroku时,我看到了荒谬的加载时间(1-2分钟)。 HTML立即呈现。当我部署到Meteor.com的免费服务器时,加载时间要低得多,但对于4个微小的数据仍然大约需要15秒。当我在本地部署时,我没有看到这一点,app会立即从数据库中提取数据。

值得注意的是,我不认为这是Heroku的“空转”问题。即使我已经有一个浏览器窗口刚刚打开应用程序,如果我使用不同的浏览器再试一次,我仍然会得到1-2分钟的加载时间。然而,一旦加载了数据,性能就会变得很好,我可以毫无问题地进行读写。

我错过了什么?我没有在控制台中看到任何错误,mongo在日志中显示了几个查询,并显示它正在快速响应4个文档,但显然在中间某处有交通堵塞。非常感谢任何帮助,如果我无法通过这个Meteor现在对我的需求毫无用处。

更新:我一直在Firebug中密切关注它,看起来性能基本上不一致。有时简单刷新需要1分钟,有时需要10秒。但我注意到的是,它的速度很慢,它获取了sockjs / info文件,然后就是sockjs POST被中止(有时是多次)。当它快速运行时,POST和后续POST运行顺利

Slow:
GET http://pocleaderboard.herokuapp.com/sockjs/info 200 OK 22ms
POST http://pocleaderboard.herokuapp.com/sockjs/029/su0d77fb/xhr Aborted
GET http://pocleaderboard.herokuapp.com/sockjs/info 200 OK 27ms
POST http://pocleaderboard.herokuapp.com/sockjs/132/uljqusxd/xhr Aborted
GET http://pocleaderboard.herokuapp.com/sockjs/info 200 OK 28ms
POST http://pocleaderboard.herokuapp.com/sockjs/154/kcbr6a5p/xhr Aborted

Fast(er):
GET http://pocleaderboard.herokuapp.com/sockjs/info 200 OK 1.08s
POST http://pocleaderboard.herokuapp.com/sockjs/755/xiggb555/xhr 200 OK 1.02s

2 个答案:

答案 0 :(得分:3)

Meteor在本地快速加载,因为它不依赖于您的互联网连接,文件只能从您的硬盘中读取而不需要下载。 加载数据后,无论您在哪里托管数据都是一样的,因为客户端(您)在缓存的mongo数据库上执行所有操作,然后等待服务器说明操作是否正常。

但是对于Heroku加载时间,我不知道,抱歉!

更新: 这些是Meteor使用的SockJS的长期吸引力。 通常这些拉动仅在热代码推送时被中止(当添加/更改/删除文件时)。

您或Heroku似乎在目录中编写或更改某些内容。 因为Meteor可以启动热代码推送。

答案 1 :(得分:1)

Heroku可能不支持网络套接字,这意味着您会遇到较慢的轮询方法。看到这个: https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku