2015-11-12 3 views
8

Meteorアプリでログイン応答時間が非常に遅いです。負荷が200のログイン/分に近づくと呼び出しが非常に遅くなるobserveChanges:loginWith <サービス>としてLogin methodログイン時にlong observeChangesコール

ObserveChanges large

は流星コアの一部であり、この問題はデバッグが困難であると考えられます。アプリが100〜200回のログインに達すると、遅い応答時間が表示されるのは、 です。アプリに負担がかからない場合、observeChangesは数ミリ秒しかかかりません。これを引き起こす原因は何ですか?

EDIT:遅いアイテムをスタックトレースを追加しましたが展開:あなたは、個々のユーザーの詳細情報を返すためのカスタム出版を定義したようObserveChanges large

+0

大規模なプロダクションアプリでは、反応的なloginServiceConfigurationが過剰なものだと私は常に考えていました。しかし、私はそれを使用しないでください –

+1

200ログイン/秒を避ける方法がわからないのですか?ワオ。 –

+0

それぞれを拡張して詳細を「SHOW MORE」に投稿できますか?同様に、あなたのオブザーバーはこのために何を再利用していますか? –

答えて

1

があなたのスクリーンショットを見ると、それが見えます。このクエリは、反応性であることに興味がない場合は、トラブルシューティングの手順として、反応性を無効にしてみてください:

Meteor.publish('currentUser', function() { 
    return Users.find({ 
    _id: this.userId 
    }, { 
    fields: { 
     emails: 1, 
     registered_emails: 1, 
     services: 1, 
     isPremium: 1, 
    }, 
    reactive: false, 
    }); 
}); 

(あなたが反応するものを維持したい場合)、さらに物事を取るために、あなたはMeteor 1.3's poll/diff tweaking capabilitiesを活用するに見たいと思うかもしれませんそれが違いを生むかどうかを確認してください。だから、あなたのユーザーの出版物にoplogに頼るのではなく、その特定のクエリに対して無効にして、pollingIntervalMspollingThrottleMsのオプションを調整してみてください。したがって、次のようなものがあります。

Meteor.publish('currentUser', function() { 
    return Users.find({ 
    _id: this.userId 
    }, { 
    fields: { 
     emails: 1, 
     registered_emails: 1, 
     services: 1, 
     isPremium: 1, 
    } 
    }, { 
    disableOplog: true, 
    pollingThrottleMs: 10000, 
    pollingIntervalMs: 10000, 
    }); 
}); 
関連する問題