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

※リクエストは通常のリクエスト、画像アップなどではない。



負荷計測ははじめて行ったのですが、こんな感じでよいのでしょうか?

「ここちがう!」というのありましたら、お気軽にコメント等ください><