web-dev-qa-db-ja.com

ユーザー数の計算方法と負荷テストの時間を考える方法

ユーザー数思考時間ペーシング時間と負荷テストの反復回数の計算方法を知りたいです。

要件は次のとおりです。

  • 1時間あたり10000トランザクションを達成する必要があります。
  • 1時間の実行を行う必要があります。
  • 思考時間とペーシング時間を指定する必要があります

注意:

  1. 私のスクリプト「aircraft」には7つのトランザクションが含まれています。
  2. 全体的な応答時間は、思考時間なしで16秒です。

1時間あたり10000トランザクションを達成できるように、与えられるユーザーの数を計算する方法と、指定する必要のある思考時間とペーシング時間および反復回数を計算するにはどうすればよいですか?

6

唯一の目標が特定の期間に特定の数のトランザクションをシミュレートすることである場合、テストの仮想ユーザーをかなり少なくしてそれを行うことができます。

7トランザクションの平均トランザクション時間が16秒の場合、1人の仮想ユーザーを使用して1秒あたり7/16トランザクションを実行できることを意味します。

1時間に10,000のトランザクションを取得するには、複数の同時仮想ユーザーを使用する必要があります。

VU = Number of virtual users
time = test time in seconds
TPS = transactions per second

VU * time * TPS = total_transactions

この場合、total_transactionsはわかっていますが、VUはわかっていないので、次のように書き直します。

total_transactions / (time * TPS) = VU

私たちが持っている数字を使用すると、次のようになります。

10000 / (3600 * 7/16) = 6.3

つまり1時間で10,000のトランザクションを取得するには、6つ以上のVUが必要です。たぶん、10 VUを使用し、必要に応じてスリープ時間を挿入して、正確に10,000トランザクションを達成します。

その場合、どのくらいの睡眠時間と何回の反復が得られますか?

10人のユーザーが16秒あたり7トランザクションで1時間実行すると、合計10 * 7/16 * 3600 = 15,750トランザクションが実行されます。ユーザーの速度を少し遅くする必要があります。 1秒あたり7/16のトランザクション全体を実行しないようにする必要があります。次の式を再度使用できます。

VU * time * TPS = total_transactions

TPS = total_transactions / (VU *time)

TPS = 10000 / (10 * 3600)   =>  TPS = 0.2777...

VUが7/16(0.44)TPSではなく0.28TPSのみを実行することを確認する必要があります。

TPS = transactions / time

スクリプトは16秒で7つのトランザクションを実行し、7/16(0.44)TPSを取得します。

スクリプトに必要な時間を調べるために、スクリプトを次のように変更します。

time = transactions / TPS

time = 7 / 0.277778   => time = 25.2 seconds

現在、スクリプトには16秒かかりますが、25秒かかる必要があるため、9秒のスリープ時間を追加する必要があります。

そう:

10個のVUが、1時間の間に25秒で7個のトランザクションを実行すると、10,000個のトランザクションが生成されます。

10 * 7/25 * 3600 = 10080

各VUが実行するスクリプトの反復回数は次のようになります。

3600 / 25 = 144 iterations

総括する:

Number of VUs: 10
Total sleep time during one iteration: 9
Iterations/VU: 144

これはすべて、トランザクション時間が一定であり、トラフィックを生成した結果として増加しないことを前提としていることに注意してください。この設定では、ターゲットシステムで1秒あたり3トランザクション近くが生成されます。以前にその頻度でテストしたことがない場合は、ターゲットシステムの速度が低下するかどうかはわかりません。

8
Ragnar

私は1つの質問があります:あなたはTPS:7/16について言及しました-それは何に基づいて7/16ですか? 16/7です。

それ以外の場合は、次の計算を行います。1時間あたり10000トランザクション、次に1秒あたり10000/3600 = 2.77;これと7/16は同じです。あなたの計算は間違っていると思います。訂正してください。

0
sivaraj