負荷テストデータの整理。JMeterを利用して負荷テストを行ってみるとわかりますが、大きな手間と試行錯誤が必要になります。より意味のあるテストをするためには、トライ&エラーが必要になります。しかし、データ整理が大変すぎるため、思うようなテストを実施できない企業も多いのではないでしょうか。
ディーネットでも、同様の課題に直面したことがあり、WEBシステム化をすることで改善してきました。この記事では、ディーネットが直面した課題と解決方法についてご紹介します。
負荷テストツールについて興味が湧いた方はお問い合わせページよりご連絡ください。
当初直面していた課題
JMeterを利用した負荷テストを実施していますが、次のような課題に直面していました。
- データ収集範囲が多岐にわたるため、取得が大変
- 何度も実施するため、データの整理が非常に手間
データ収集範囲が多岐にわたるため、取得が大変
JMeterを実行すると、実行結果を取得することが可能です。しかし、実行結果だけではボトルネックの特定はできません。そこで、JMeterを実行している時間帯について次のデータ収集が必要となります。
- JMeterの実行結果
- 対象サーバ群のリソース情報
- 対象サーバ群のログ情報
- 対象サーバ群の設定ファイル
リソースはCloudWatchやMunin等でも取得できますが、JMeterを実行している時間帯とひもづける必要があります。ログについても同様で、実行時間中のログのみ取得しておく必要があるため、大きな手間がかかります。サーバー台数が増えてくると、なおさら大変です。
何度も実施するため、データの整理が非常に手間
限界スループットを確認するためには、条件を変更し、何度もJMeterを実行する必要があります。一度でも大変なデータ取得を10回以上も実施するとなると、データ整理をしている時間のほうが長くなることもありました。
一部条件を変更して再実行したくなる場合がありますが、気軽にできません。
負荷テストツール
データ整理ではなく、ボトルネックの特定やお客様の課題解決に時間を集中投下させるために、JMeterを使ったWEBの負荷テストツールを作成しました。この負荷テストツールでは、次のことが実現できます。
- 限界スループットを見つけるためのJMeter連続実行
- データの自動収集とJMeter実行との関連付け
- チューニング後の効果測定が容易
- スレーブを利用した大規模負荷テスト
限界スループットを見つけるためのJMeter連続実行
限界スループットを見つけるために、スレッド数などの条件を変更し、連続実行することが可能です。
スループットのグラフ化も自動で行うため、限界性能の特定が容易に行えます。
データの自動収集とJMeter実行との関連付け
予め設定を行うことで、JMeter実行中のデータ取得を自動で行うことが可能です。取得が可能なデータには次のようなものがあります。
- サーバリソース情報
- アクセスログ
- エラーログ
- スロークエリ
- 特定コマンドを定期実行した結果
- 設定ファイル
リソース情報には、sysstatのsarを利用しており、1秒間隔で取得したデータをグラフ化して確認が可能です。グラフ化されているので、サーバーリソース単位でのボトルネック特定が非常にやりやすくなります。
各種ログについては、JMeter実施前と実施後のデータは除外した形で、実施中の必要なデータのみ取得することが可能です。スロークエリについても同様のことが可能なため、スロークエリの特定も用意に実現できます。
また、ユーザー独自に実行したいコマンドを定期実行し取得することも可能です。これを利用することで、ログには出力されないような、該当プロセス数の推移の確認などができるようになります。
関連する設定ファイルを取得しておくことで、テスト実施時の条件を後から見返すことも可能です。
チューニング後の効果測定が容易
実施したテストについてのボトルネック箇所や改善点を記録しておくことができるので、後から見返したときにテスト目的や性能比較を容易におこなうことができます。
スレーブを利用した大規模負荷テスト
規模が大きいシステムになると、JMeterがボトルネックになってきます。JMeterのスレーブの利用にも対応しているため、小規模から大規模まで様々な負荷テストに対応することができます。
まとめ
負荷テストを行うさいに、データの収集および管理は非常にコストがかかる作業になります。ディーネットでは、WEBシステム化することで、コストを最小限に抑え、ボトルネックやチューニングに集中できるように工夫をしています。
負荷テストツールについて興味が湧いた方はお問い合わせページよりご連絡ください。社内ツールではありますが、ご要望に応じて可能な限りのご支援をさせていただいています。