5

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

值得注意的是,我认为这不是 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
4

2 回答 2

3

Meteor 在本地加载速度如此之快,因为它不依赖于您的互联网连接,并且文件可以从您的硬盘驱动器中读取,无需下载。并且一旦加载数据,它在您托管的任何地方都是相同的,因为客户端(您)在缓存的 mongo 数据库上执行所有操作,然后等待服务器说操作是否正常。

但是对于 Heroku 的加载时间,我不知道,对不起!

更新:这些是 Meteor 使用的 SockJS 的长拉。通常,这些拉取只会在热代码推送时中止(添加/更改/删除文件时)。

您或 Heroku 似乎在目录中写入或更改了某些内容。因为那时Meteor可能会发起热代码推送。

于 2012-12-19T10:28:16.803 回答
1

Heroku 可能不支持 web-sockets,这意味着你被较慢的轮询方法卡住了。看到这个: https ://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku

于 2012-12-19T16:44:55.893 回答