こんちは!開発2部の吉岡です。
今回はサーバーの負荷テストに関するお話です。
ツール
オーツーでは負荷テストにjmeterを使用しています。
GUIだけでなくCUIでの起動にも対応しており、Windows・Mac OS・Linuxと各プラットフォームで動作してくれます。
高機能過ぎる感もありますが、使い慣れてくると開発に必須のツールになってしまいます。
負荷テストの流れをざっと書くと下のような感じです。
- WindowsやMacでGUIを使用してテストの設定を作成。jmxファイルを保存。
- サーバーにもjmeterを設置。jmeterからダウンロードして展開しておくだけです。
- jmxファイルをscpなどでサーバーにアップロード。
- CUIでjmeterを動かしてテストを実施。被テストサーバーで、sar等で負荷状態を記録しておきます。
- 結果を回収して集計。
- パフォーマンスがビミョウであれば、原因の調査・修正。再テスト。期待している結果が得られたかチェックします。詳細は、別記事で…
- 問題がなければ、結果をまとめる。結果をエクセル等に清書してまとめておきます。
設定値
jmeterは実行時、loopやthread、rampupというような負荷パラメータを設定します。
案件にもよりますが、このパラメータは想定DAUと、ユーザーの想定アクセスパターンから、単位時間でのアクセス数を計算して算出します。
負荷的な余裕を考えて、算出した数値の2倍の負荷をかけることが多いです。
ただ、この設定値の計算は、案件によって様々でなかなか一概には言えません…
負荷テストの実行
クラウド上のサーバーでjmeterを動かし、被テストサーバーに負荷をかけます。
例えば、↓のような感じです。
/usr/local/apache-jmeter/bin/jmeter -n -t /home/hoge/huga.jmx -l /var/log/jmeter_huga.log -Jhoge=100
- -t :jmxファイルの指定
- -l :出力ログファイル
- -Jhoge:jmeter内で${__P(hoge)} としておくと、負荷パラメータ等をコマンドライン引数として動的に設定することが出来ます。
jmeterの余談
jmeterは非常に高機能なので、設定次第ではユーザーの行動をシミュレートしてWebサーバにアクセスすることも出来ます。
例えば、下のような感じです。
ログイン
↓
ホーム画面
↓
ガチャを引く
↓
クエスト一覧
↓
クエスト実行
↓
クエスト終了
↓
ホームに戻る
上のような一連の行動を開発環境で自動的にループさせておくと、それっぽいテストデータを得ることが出来ます。
で、それを動作確認用テストデータとして使用できるという寸法です。
こちらに続編的なエントリーを投稿しました。