OHSの負荷テストをJMeterで実施したい(入門ガイド?)実践を通して学ぶ負荷テストの基礎
こんにちは、nishiです!!
今回は、OHSを構築しているのでその性能テストを行いたいのですが、性能テストツールとして広く使われているApache JMeterの使い方について、実際に使いながら学んだことを共有したいと思います。
1. JMeterとは?
Apache JMeterは、Webアプリケーションの負荷テストや性能測定を行うためのオープンソースツールです。主な特徴として:
GUIベースの操作が可能
様々なプロトコルに対応(HTTP、HTTPS、FTP、データベースなど)
無料で使用可能
拡張性が高い
2. インストール手順
必要な環境
Java 8以上がインストールされていること
インストール手順
Apache JMeterの公式サイトからバイナリファイルをダウンロード
ダウンロードしたzipファイルを解凍
解凍したフォルダ内の`bin`ディレクトリにある以下のファイルを実行
Windows: `jmeter.bat`
Mac/Linux: `jmeter.sh`
※僕はここで以下画面が出たのでjavaの用意ができてませんでした・・・
javaのインストール手順
ということで、javaをインストールします。
https://www.java.com/ja/download/
■ダウンロードします
■実行ファイルを実行
■インストールポチポチ
できました。
※改めてJMETER起動すると。。。
出た!
3. 基本的な使い方
言語の変更
まず英語だと読みづらいので、日本語にします。
Option>Chose language>Japanese を選択。
テストプランの作成
JMeterを起動した状態で、左上の”新規”をクリック。
これで”テスト計画”を作成できたはず。
スレッドグループの作成
左上の「テスト計画」を右クリックし、 追加 > Threads(Users) > スレッドグループ を選択。
これでスレッドグループ を作成できる。
HTTPリクエストの設定
・”スレッドグループ”を右クリック→追加→サンプラー→HTTPリクエスト
■以下の項目を設定
プロトコル:http
サーバー名またはIP:example.com(負荷検証を行うサーバ名やIP)
ポート番号:80(基本は80のはず。サーバーの設定に合わせる)
HTTPリクエスト:GET
パス:/sites/(今回はweb center sitesへのアクセスを通してテストするため)
スレッドグループの設定
スレッドグループでは、上で決めたHTTPリクエストを"何秒で何回送るか"といったことを設定できます。
スレッドプロパティにある、
・スレッド数
・Ramp-Up期間(秒)
・ループ回数
が重要な要素ですね。
ここで各項目について説明入れておきます。
スレッド数
「同時アクセスユーザー数」というイメージ
例:スレッド数を100に設定すると、100人のユーザーが同時にアクセスする状況をシミュレートします
現実世界での例:ECサイトで「セール開始時に100人が一斉にアクセスする」という状況に相当
Ramp-Up期間(秒)
「設定したスレッド数に到達するまでの時間」です
例:
スレッド数100、Ramp-Up期間20秒の場合 → 20秒かけて徐々にアクセス数を100まで増やします(約1秒ごとに5アクセス)
スレッド数100、Ramp-Up期間0秒の場合 → 100人が一斉にアクセス(急激な負荷)
現実世界での例:
Ramp-Up期間20秒:「オンライン学習システム(授業開始時)の生徒のログイン状況」
Ramp-Up期間0秒:「コンサートチケット販売開始時に一斉アクセス状況」
ループ回数
「各ユーザー(スレッド)が何回繰り返しアクセスするか」を指定
例:
ループ回数1:各ユーザーが1回だけアクセスして終了
ループ回数10:各ユーザーが10回アクセスを繰り返す
無限ループ:永続的に繰り返し(テストを手動で停止するまで継続)
現実世界での例:「ユーザーが同じページを何度も更新する」や「複数のページを順番に見ていく」状況
レポート設定
結果の出力を設定できるのでまあどれでもよさそうですね。
スレッドグループを右クリック→追加→リスナー→結果をツリーで表示
スレッドグループを右クリック→追加→リスナー→統計レポート
スレッドグループを右クリック→追加→リスナー→結果を表で表示
4. 実践:シンプルな負荷テスト
スレッドプロパティを以下のように設定
・スレッド数:100
・Ramp-Up期間(秒):1
・ループ回数:10
5. テスト実行と結果の確認
テストの実行
・緑の実行ボタンをクリック
という感じで結果がでました。
結果の分析
集計レポートでは以下の項目を確認できます:
サンプル数
平均応答時間
エラー率
スループット
受信KB/秒
・・・・・・・・・
え~、正直ここからはよくわかりませんでした(てへペロ!!!
一応参考程度のメモだけのせときま~す(~_~;)
6. よくあるトラブルシューティング
メモリ不足エラー
`bin/jmeter.bat`(または.sh)ファイルを編集
`-Xms1g -Xmx1g`のような設定を追加
証明書エラー
HTTPSの場合、証明書の設定が必要
JMeterのオプションから証明書をインポート
タイムアウトエラー
HTTPリクエストの設定でタイムアウト値を調整
7. 応用テクニック
CSVデータの活用
テストデータをCSVファイルに保存
CSV Data Set Configを追加
パラメータとしてテストデータを使用
変数の使用
ユーザー定義変数の追加
テスト中に変数を参照
まとめ
JMeterは非常に強力な負荷テストツールですが、基本的な使い方は意外とシンプルです。この記事で紹介した手順を参考に、まずは小規模なテストから始めてみることをお勧めします。
実際に使ってみると、GUIで直感的に操作できる点が非常に魅力的ですね。ぜひみなさんも試してみてください!