負荷テスト・チューニング 作業内容
現状調査・負荷測定
測定シナリオ作成
お客様とご相談のうえ、負荷測定シナリオや負荷数を決定します。
- 今回負荷測定を行うシナリオ(ページ表示→検索条件入力→検索結果表示等の一連の操作)を作成します。シナリオ作成にあたっては、パフォーマンス上問題になっている画面操作を対象にする必要があります。
- 同時アクセス数や複数シナリオがある場合は、そのシナリオの全体での利用の割合等を考慮のうえ、各シナリオに実際に負荷をかけるために想定アクセス数を決定します。
- パフォーマンス測定でシナリオを再現するため、測定ツール(Jmeter)のスクリプトを作成します。
※携帯サイトとPCサイトが別の場合は、測定ツール側のUser-Agentの設定をします。
環境調査
負荷測定をするインフラの調査をします。
- WEBサーバの台数、DBサーバの台数、ロードバランサーの利用、レプリケーション・クラスタの利用、機器のスペック等インフラの調査をします。
- 事前に各サーバの設定値・パラメータ情報の収集をします。
測定項目決定
パフォーマンス測定時の計測項目を決定します。
一般的な内容を紹介します。
【Web/APPサーバー】
- CPU・メモリの使用状況の測定
sarコマンドにより、CPU・メモリの使用率を取得します。
- ロードアベレージ状況の測定
sarコマンドにより、ロードアベレージの状況を取得します。
- I/O待ちプロセス、スワップ、Disk I/Oの測定
vmstatコマンドにより、I/O待ちプロセス・スワップ・Disk I/O状況を取得します。
【データベース】
- CPU・メモリの使用状況の測定
sarコマンドにより、CPU・メモリの使用率を取得します。
- ロードアベレージ状況の測定
sarコマンドにより、ロードアベレージの状況を取得します。
- I/O待ちプロセス、スワップ、Disk I/Oの測定
vmstatコマンドにより、I/O待ちプロセス・スワップ・Disk I/O状況を取得します。
<MySQLに関する測定>
- ステータス、プロセスリスト、実行SQLの測定など
MySQLで提供されている「show global status」、「show processlist」の出力により、MySQLの様々なステータス変数や現在実行中のプロセスの一覧を取得します。
- MySQL初期化パラメータファイル(my.cnf)の分析
初期化パラメータファイルより、MySQLプロセスに割り当てられているメモリ量等を確認します。また、DBサーバーの全メモリ領域から増やすことができるパラメータを確認します。
<ORACLEに関する測定>
- SQLトレース取得
セション指定または初期化パラメータでSQLトレース取得を指定して、実行されたSQLを取得します。
- STATSPACKによる統計情報
OracleStatspackをインストールして、各種キャッシュのヒット率等の統計情報を取得します。
ツール (Jmeter)スクリプト作成
「測定シナリオ作成」に基づいて、ツール (Jmeter)のスクリプトを作成して正常に稼働することをチェックします。(計測実施前に現地にて動作確認をします)
測定結果取得スクリプト作成
「測定項目決定」で決めた項目の記録用のスクリプトの作成をします。
最終的には現地にて動作確認します。(計測実施前に現地にて動作確認をいたします)
DBデータ準備
お客先にて計測に必要なデータを準備していただきます。
計測実施
現地にて、測定ツールを利用して測定をします。
測定にあたっては、計測ツールを弊社PCより実行+サーバー上での測定情報取得スクリプトを実行して、各種ログ等を取得します。
※「負荷測定」のみの場合は、「測定結果レポート」を計測実施後、1週間程度でご提出いたします。測定結果のご説明やボトルネック要因の分析をご希望の場合は「計測結果分析」サービスのご契約が必要です。
計測結果分析
ボトルネック要因分析
「計測結果」よりボトルネックになっている部分およびその影響度の大きさの順位を分析します。
- CPUDBサーバーのOracleの実行計画
- 同サーバーのSGA割り当て等初期化パラメータ要因
- インデックス不足等
- その他パラメータ
チューニング計画決定
上記ボトルネック部分に対するチューニング計画を作成します。
チューニング
チューニング実施
現地作業となります。
上記に応じたチューニング作業をします。
計測実施
チューニング後に再度計測をし、その結果が満足いくものかどうかの判断をします。