2

流星サーバーに問題があります。Meteor.publish / Meteor.subscribeを使用して300程度のアイテムを公開すると、サーバーのメモリが増加し、最終的に応答しなくなります。1)アクティブなサブスクリプションによって取得されたリアクティブサブスクリプション/メモリの数を監視する2)「1回限りの公開」のようなものを作成する-サーバー側のコレクションの変更を無視する

上記のいずれかをどのように達成できるかについての考えはありますか?または、meteorアプリのパフォーマンスをデバッグ/改善するためのその他のヒントはありますか?ありがとう

4

2 に答える 2

2

zorlakの答えは良いです。

他のいくつかのこと:

this.setのコードに基づいて、APIを介して独自のカスタムパブリッシャーを作成することにより、1回限りの公開を行うことができます_publishCursor。あなたは次のようなことをするでしょう:

Meteor.publish("oneTimeQuery", function () {
  MyCollection.find().forEach(function (doc) {
    sub.added("collectionName", doc._id, doc);
  });
  sub.ready();
});

これはクエリを実行し、その結果を送信してから、それを再度更新することはありません。

とはいえ、Meteorのパフォーマンスがこれが不要になることを願っています!

また、アプリからMeteor(認証されたサブスクリプションとして公開)に統計(観測されたカーソルの数など)を取得する簡単な方法を追加したいのですが、まだ時間がありません。

于 2012-12-14T00:49:19.680 に答える
0

Meteor 0.5.1 の時点でできることの 1 つは、公開機能から userId への依存関係を削除することです。パブリッシュ関数がサブスクライブしているユーザーに依存しない場合、Meteor は db クエリをキャッシュするため、サブスクライブするユーザーが増えても速度が低下することはありません。

この Meteor ブログ投稿を参照してください: http://meteor.com/blog/2012/11/20/meteor-051-database-scaling

于 2012-12-14T00:37:17.737 に答える