5

MongoHQ で Heroku (無料利用枠) で Meteor を使用しています。現在、私のアプリは非常にシンプルです。コレクションから 3 ~ 4 個のエントリをロードしますが、Heroku にデプロイすると、途方もないロード時間 (1 ~ 2 分) が表示されます。HTML はすぐにレンダリングされます。Meteor.com の無料サーバーにデプロイすると、読み込み時間は大幅に短縮されますが、4 つの小さなデータの場合でも約 15 秒かかります。ローカルにデプロイすると、これはまったく表示されません。アプリは DB からすぐにデータを取得します。

Heroku の「アイドリング」の問題ではないと思うことに注意してください。アプリを開いたばかりのブラウザー ウィンドウが既に 1 つある場合でも、別のブラウザーを使用して再試行すると、読み込みに 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 ソケットをサポートしていない可能性があります。つまり、低速なポーリング アプローチに固執しています。これを参照してください: https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku

于 2012-12-19T16:44:55.893 に答える