セロリの作業者が複数のキュー(または多分多くのキュー)を引き出しているときに、たとえば、私のシステムが1から2ではなく10から15の待ち行列になるように設計されていれば、大きなパフォーマンス上のペナルティがありますか?フォローアップとして、これらのキューの一部が空の場合はどうなりますか?セロリでは、多くのキューを使用することによるパフォーマンス上の重要な影響があります
答えて
キュー制限に関するご質問への短い答えは:
は、複数のキューが悪化したりほうがよいのではないだろう持っ心配しないでください、ブローカーは、それらの膨大な数を処理するように設計されています。もちろん、多くのユースケースでは、本当に高度なものを除いて、それほど多くは必要ありません。空のキューは問題を発生させず、ブローカ上のメモリをわずかしか使用しません。
交換やバインディングのような他のものがあることを忘れないでください。実際の制限はありませんが、より良いです。understand TOPICの交換は、 CPUを直接的なものよりも)
より完全な答えを得るために、より一般的な観点からパフォーマンスのトピックを見てみましょう。
労働者数と並行性因子:
セロリのようなメッセージパッシングに基づく分散システムを見性能の観点から分析するための2つの主要トピックがあります。
セロリの各ワーカーは同時に実行できるタスクの数を設定する並行性パラメータを持っていますが、これはサーバーの容量(CPU、RAM、I/O)およびオフもちろん、特定のコンシューマが実行するタスクのタイプにも基づいています(消費するキューによって異なります)。
もちろん、特定の時間枠内で実行する必要のあるタスクの総数によっては、実行する必要があるワーカー/サーバーの数を決定する必要があります。
ブローカ、このアーキテクチャスタイルの単一障害点。
ブローカー、特にRabbitMQは何百万ものメッセージを問題なく管理するように設計されていますが、より多くのメモリーを使用する必要があります。
このマシンも調整して、できるだけhigh availabilityにする必要があります。
もちろん、避けるべき主なものは、生成されるメッセージよりも低いレートでメッセージが消費されることです。キューが成長し続け、RabbitMQが爆発します。ここでsome hintsを見つけることができます。
特定の時間枠で実行されるタスクの数を増やす必要がある場合がありますが、要求のピークに応じてのみ実行する場合があります。このアーキテクチャーの素晴らしい点は、キューのサイズを監視できることです。理解が深くなると、すでに設定されているセロリワーカーで新しいマシンを即座に作成し、必要がない場合はオフにすることができます。これは非常にコストを節約し、効率的なアプローチです。
1つのヒントとして、セロリタスクの結果をRabbitMQに保存しないように注意してください。
コメントありがとう - 非常に便利です。おそらく私は誤解しているかもしれませんが、これらの注釈はブローカー(RabbitMQや、私の場合はRedisなど)のパフォーマンスへの影響に焦点を当てています。私の質問は、主に私のPythonアプリケーションコード、より直接的にはCeleryフレームワークのパフォーマンスに関する心配があったと思います。たとえば、カップルではなくキューを複数使用している場合、Celeryは作業を遅らせるでしょうか? – FMc
こんにちは、それはセロリの視点からは基本的に0の影響があるからです。実際、メッセージの受け渡しに基づいているフレームワークは、複数のキューが正常に処理されていることをうまく処理できないというフレームワークを想像することはほとんどありません。 –
- 1. あまりにも多くのファサードを使用すると、パフォーマンスに影響しますか?
- 2. Javaでコードブロックを使用するとパフォーマンスに影響はありますか?
- 3. _config.GetSection( "section")["key"]の使用によるパフォーマンスへの影響はありますか?
- 4. マルチサンプルアンチエイリアスをiOSで使用するとパフォーマンスにどのような影響がありますか?
- 5. iOSアプリケーションのコンパイル時にarmv7を使用するとパフォーマンスにどのような影響がありますか?
- 6. アクティビティの多くのインポートは、アンドロイドのパフォーマンスに影響します
- 7. Windows Phoneプロジェクトに多数のdllがあるとパフォーマンスに影響しますか?
- 8. binディレクトリに.pdbファイルが存在することにパフォーマンス上の悪影響はありますか?
- 9. 複数のキュー・マネージャが作成された場合、パフォーマンスにどのような影響がありますか?
- 10. Rustでローカル関数を使用することにパフォーマンス面でマイナスの影響はありませんか?
- 11. IonicアプリでlocalStorageのパフォーマンスにどのような影響がありますか?
- 12. 未使用のCSSセレクタ/ルールが数多くあるためにパフォーマンスにどのような影響がありますか?
- 13. $(これ)は$([セレクタ])のようなパフォーマンスに影響しますか?
- 14. 体のクリックイベントをより多くバインドすると、アプリケーションのパフォーマンスに影響しますか?
- 15. 多くのモジュールを含むNodeMCUをコンパイルすると、メモリ使用量に影響がありますか?
- 16. odbc_fetch_array()のパフォーマンスにどのような影響がありますか
- 17. Python&Pandas:多くのdf.copyを使用するとコードのパフォーマンスに影響しますか?
- 18. ここで重要なのは使用する必要がありますか?
- 19. 関数の代わりにメソッドを使用すると、パフォーマンスに影響はありますか?
- 20. NServiceBus ForwardRecievedMessagesToを使用する理由と、それを使用することによるパフォーマンスの影響
- 21. スレッド間でオブジェクトを共有するとパフォーマンスにどのような影響がありますか?
- 22. MongoDb javaドライバを直接使用するのではなく、Casbahを使用することによるパフォーマンスの影響は何ですか?
- 23. アプリケーションリスナーの追加が多すぎるとパフォーマンスに影響しますか?
- 24. CSSが多すぎるとWebサイトのパフォーマンスに影響しますか?
- 25. クラスに[Serializable]を追加するとパフォーマンスに影響はありますか?
- 26. 多くのargs:stringまたはStringBuilderでstring.Formatを使用すると、よりパフォーマンスが向上しますか?
- 27. Windowsのレジストリ値にアクセスするとパフォーマンスにどのような影響がありますか?
- 28. will_many:RoRに大きなパフォーマンス上の影響を与えますか?
- 29. ボックスシャドーがスケールのパフォーマンスに影響する
- 30. (foreachループ)イテレータを宣言すると、パフォーマンスに影響はありますか?
私は経験から分かっていませんが、心配することはありません。 –