JMeterで負荷計測やってみた
what
負荷テストを行ったのでそのメモ
負荷計測ツール
JMeter を利用しました。
負荷計測環境のポイント
参考 => 5.JMeterでのテストの作成・実行
また、以下の点などにも気をつけてください
・JMeterを起動するマシンとテスト対象マシンを分ける
→同一のマシン上で動作させると、正確な測定結果を得られません
・最初の内は、JMeterを起動するマシンとテスト対象マシンは同一ネットワーク内に配置する
→パフォーマンスが悪かった場合など、ボトルネックがネットワークにあるのか、テスト対象マシンにあるのか、判別がつきづらくなります
今回は、『JMeterを動かすPC』をWindowsで動かし、『テスト対象マシン』をLinuxにしました。
負荷計測結果
Throughput
結果 160 ( 160.7017781 ) でした。
スレッド数 200 までは、上昇しますが、それ以降は 160 前後で安定します。
つまり、テスト時のリクエストであれば、1日 13,824,000 リクエスト( 160 * 60 * 60 * 24 = 13,824,000 )受けられることになります。
※すべて、Ramp-Up 期間(秒)、ループ回数は 1 で行いました。スレッド数は表のとおり。
スレッド数 | Throughput | Error(%) |
---|---|---|
100 | 92.25092251 | 0 |
150 | 135.1351351 | 0 |
200 | 163.9344262 | 0 |
250 | 161.1863314 | 0 |
300 | 166.2971175 | 0 |
400 | 160.3849238 | 0 |
500 | 164.2575558 | 0 |
600 | 158.8562351 | 0 |
700 | 157.6931741 | 0 |
800 | 151.3145451 | 0 |
900 | 161.7250674 | 0 |
1000 | 161.3684041 | 0 |
最大 | 166.2971175 |
Throughput が横ばいになってからの平均値 | 160.7017781 |
1秒間 160 リクエストを 15分間 やってみる
Throughput は 160 でした。では、1秒間に 160 リクエストであれば、ずっと処理し続けられるということです。
24時間ずっとやるわけにもいかないので、1秒 160 リクエストを 15 分続けて結果を見て見ましょう。
JMeter の値は以下のようにしました。
1秒間 160 リクエストを 15分間 やった時のJMeterの統計レポート
Label | # Samples | Average | Median | 90% Line | Min | Max | Error % | Throughput | KB/sec |
---|---|---|---|---|---|---|---|---|---|
HTTP リクエスト | 144000 | 20 | 18 | 47 | 0 | 491 | 0 | 158.2558448 | 19.1637937 |
合計 | 144000 | 20 | 18 | 47 | 0 | 491 | 0 | 158.2558448 | 19.1637937 |
Error 0% です。素晴らしい。Throughput も 158.2558448 と 160 に近い値を指しています。
レスポンスもいい感じで、MAX 491 ms です。Median も 18 ms とよい感じです。
1秒間 160 リクエストを 15分間 やった時のロードアベレージの推移
1秒間 160 リクエストを 15分間 行い、1 分間隔でロードアベレージのスナップショットを見てみた。
- cat /proc/loadavg の 1分間隔のスナップショット
時間(分) | 1分 | 5分 | 15分 | 実行中(running)のプロセス数/全プロセス数 | 最後に生成されたプロセスのid |
---|---|---|---|---|---|
0 | 0.00 | 0.00 | 0.00 | 1/118 | 25795 |
1 | 2.00 | 0.56 | 0.19 | 3/118 | 25796 |
2 | 2.91 | 1.09 | 0.39 | 5/118 | 25797 |
3 | 3.51 | 1.61 | 0.62 | 3/118 | 25798 |
4 | 3.80 | 2.06 | 0.83 | 4/118 | 25801 |
5 | 4.11 | 2.45 | 1.04 | 4/118 | 25802 |
6 | 4.38 | 2.83 | 1.25 | 3/118 | 25803 |
7 | 3.90 | 2.97 | 1.40 | 5/118 | 25804 |
8 | 3.65 | 3.08 | 1.54 | 5/118 | 25805 |
9 | 4.04 | 3.31 | 1.71 | 3/118 | 25806 |
10 | 4.11 | 3.47 | 1.86 | 4/118 | 25807 |
11 | 3.99 | 3.56 | 2.00 | 4/118 | 25808 |
12 | 4.22 | 3.71 | 2.14 | 3/118 | 25809 |
13 | 4.44 | 3.85 | 2.29 | 4/118 | 25810 |
14 | 4.27 | 3.91 | 2.40 | 3/118 | 25813 |
15 | 3.81 | 3.88 | 2.50 | 1/118 | 25814 |
- グラフ
グラフをみるとよくわかります。
青いグラフ(1分)に注目してください。6分まではロードアベレージはグイグイ上がり、4.5 近くまで行きます。しかし、それ以降は 4 を前後して、安定します。
Response Time
Response Timeは スレッド数 1000 のときでも、Max 4832ms とまぁまぁな数値です。
スレッド数 | Average(ms) | Median(ms) | 90% Line(ms) | Min(ms) | Max(ms) |
---|---|---|---|---|---|
100 | 15 | 12 | 19 | 3 | 149 |
150 | 20 | 16 | 40 | 5 | 136 |
200 | 48 | 22 | 94 | 6 | 519 |
250 | 233 | 177 | 566 | 9 | 982 |
300 | 339 | 256 | 787 | 9 | 1147 |
400 | 680 | 628 | 1242 | 7 | 1788 |
500 | 841 | 606 | 1945 | 14 | 2534 |
600 | 1183 | 911 | 2631 | 14 | 2891 |
700 | 1569 | 1562 | 2876 | 12 | 3397 |
800 | 1705 | 1345 | 3513 | 14 | 4636 |
900 | 1921 | 1834 | 3557 | 23 | 4326 |
1000 | 2237 | 2197 | 4027 | 15 | 4832 |
※すべて、Ramp-Up 期間(秒)、ループ回数は 1 で行いました。スレッド数は表のとおり。
まとめ
Throughput | 1日最大リクエスト数 |
---|---|
160 | 13,824,000 |
負荷計測ははじめて行ったのですが、こんな感じでよいのでしょうか?
「ここちがう!」というのありましたら、お気軽にコメント等ください><