0

MongoDB のベンチマークに YCSB を使用しており、複数のユーザーでそのパフォーマンスを確認したいと考えています。同時ユーザーをシミュレートするにはどうすればよいですか? YCSB の構成ファイル内のスレッド数は同時ユーザーを示していますか? 助けてください

4

1 に答える 1

1

はいといいえ。一般に、スレッドの数を増やすとアプリケーションのスループットが向上しますが、スループットとユーザーの同時実行性は 2 つの非常に異なるものです。これは「思考時間」によるものです。ユーザーが Web アプリケーションにアクセスすると、ページのコンテンツを読んでそれに応答する (フォームに入力する、リンクをクリックするなど) ために、一定の時間が必要になります。

同時ユーザー数を概算するために思考時間を決定することは、平均思考時間を決定するために使用できる既存のメトリックがない限り、せいぜい大げさな推測になるでしょう。これは、さまざまなページ要求に対するバックエンド サービス時間も大きく異なる可能性が高いという事実によって、さらに複雑になります。

また、スレッドの数を合理的に増やして過度に高くすることもできません。マシンで使用可能なコアの数を考慮する必要があります。ある時点で、スレッドの数を増やすと、コンテキスト切り替えのコストがかかるため、利益が減少します。

最善の策 (IMO) は、さまざまな数のスレッドでスループット テストを実行することから始めて、スループット メトリックを収集し、システムのパフォーマンスのボトルネックを特定することです。必要なのが同時ユーザーの大まかな計算だけである場合は、おそらくそれらの数値を推定して同時ユーザー数を概算できます。

並行性テストを実行する場合は、Apache JMeter などのツールが適している可能性があります。これにより、思考時間を含む、より洗練された複数ステップのスクリプトを作成できるためです。これにより、実際のユーザー アクティビティをより正確にシミュレートできます。YCSB は非常に限定されたベンチマークであり、実際のクエリやユーザーの行動をシミュレートすることはできません。

たとえば、64 スレッドでテストを構成し、平均スループットが 1 秒あたり 25,000 トランザクションであると判断したとします。ユーザーの思考時間を 15 秒と仮定すると、約 375,000 の「同時」ユーザー (25000 * 15) に相当します。

于 2014-12-30T17:17:25.653 に答える