こんにちは。SQL Server サポート チームです。
今回は、SQL Server で問題が起きた際の調査に使用するパフォーマンスログの採取方法についてご案内します。
■概要
よく弊社にお問合せいただく問題の中で「クエリタイムアウトが発生した」、「接続タイムアウトが発生した」、「クエリのパフォーマンスが劣化した」といった調査にはパフォーマンスログの取得を依頼させていただいております。
パフォーマンスログからは、「CPU 利用率」や「メモリ使用量」、「ディスク I/O の使用量」、「SQL Server の動作状況」などの情報が含まれます。
これらを見ることで、SQL Server が動作していた時のリソースの使用状況などから問題の状況について確認し、通常時の情報と比較することで問題の傾向を確認することができます。
本記事では下記について記載いたします。
・採取する際の注意事項
・GUIを使用した採取手順
・バッチを使用した採取手順
・最大サイズを指定してローテーションさせるオプションの設定
・特定のイベントが発生したタイミングでパフォーマンスログの採取を停止させる方法
■1.採取する際の注意事項
パフォーマンスログの採取は比較的、サーバーへの負荷は低く、該当マシンへの影響は低いですが、万が一影響が出た場合には早急に停止してください。
また、ログの出力先は十分な空き領域がある事をご確認ください。
出力されるログの量は環境に依存するため、対象の環境で少しの間採取して、出力される量をご判断ください。
■2.GUIを使用した採取手順
1) [パフォーマンスモニター] を検索し、起動します。
2) 左ペインの [データコレクタセット] を展開します。
3) [ユーザー定義] を右クリックし、[新規作成] -> [データコレクタセット] を選択します。
4) 名前を指定し、[手動で作成する] を選択した上、[次へ] を押します。
5) [データログを作成する] + [パフォーマンスカウンター] を選択し、[次へ] を押します。
6) 追加を選択します。
7) 以下の例に沿って、後述のパフォーマンスカウンターを追加していきます。
例1) 採取するカウンタが下記の場合
- [Processor] :
選択したオブジェクトのインスタンス:<すべてのインスタンス>
% Privileged Time
「パフォーマンス オブジェクト」で [Processor] を展開、[% Privileged Time] を選択します。
「選択したオブジェクトのインスタンス」で <すべてのインスタンス> を選択します。
-> "追加" を押します。
例2) 採取するカウンタが下記の場合
- [Processor] :
選択したオブジェクトのインスタンス:<すべてのインスタンス>
全てのカウンタ
「パフォーマンス オブジェクト」で [Processor] を展開し、全てのカウンタが選択されていることを確認し、「選択したオブジェクトのインスタンス」で <すべてのインスタンス> を選択します。
-> "追加" を押します。
<採取対象のカウンタ一覧>
- [Logical Disk] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [Memory] :
全てのカウンタ
- [Network Interface] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [NUMA Node Memory]
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [Paging File] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [Physical Disk] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [Process] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [Processor Information] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [Server]
全てのカウンタ
- [Server Work Queues]
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [System] :
Processor Queue Length、Context Switches/sec
- [TCPv4]
全てのカウンタ
- [TCPv6]
全てのカウンタ
---------------------
↓↓↓↓ 以下は SQL Server に関するカウンタとなります。 ↓↓↓↓
※パフォーマンスオブジェクト名の "SQL Server" は、既定のインスタンスの場合となります。
名前付きインスタンスの場合、"SQL Server" の部分が "MSSQL$[名前付きインスタンス名]" となりますのでご注意下さい。
Windows Internal Database の場合、"SQL Server" の部分が "MSSQL$MICROSOFT##WID" となります。
---------------------
- [SQL Server: Access Methods] :
全てのカウンタ
- [SQL Server: Availability Replica] :
全てのカウンタ
※このカウンターは AlwaysOn 可用性グループを構成している場合に追加してください。
- [SQL Server: Buffer Manager] :
全てのカウンタ
- [SQL Server: Databases] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [SQL Server: Database Replica] :
全てのカウンタ
※このカウンターは AlwaysOn 可用性グループを構成している場合に追加してください。
- [SQL Server: General Statistics] :
全てのカウンタ
- [SQL Server: Latches] :
全てのカウンタ
- [SQL Server: Locks] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [SQL Server: Memory Manager] :
全てのカウンタ
- [SQL Server: Memory Node] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
- [SQL Server: SQL Statistics] :
全てのカウンタ
- [SQL Server: Transactions] :
全てのカウンタ
- [SQL Server: Wait Statistics] :
選択したオブジェクトのインスタンス:すべてのインスタンス
全てのカウンタ
8) 全てのカウンタを追加した事を確認し、[OK] を押します。
9) サンプルの間隔を 3 秒へ設定し、[次へ] を押します。
10) [ルートディレクトリ] にデータの保存場所を選択し、[次へ] を選択します。
11) [保存して閉じる] を選択し [完了] を押します。
12) 左ペインの [データコレクタセット] -> [ユーザー定義] に作成したデータコレクタセットが表示されます。右クリックから、開始を選択することでカウンタの採取が開始します。
※ 右クリックから、停止を選択することでカウンタの採取が停止します。
13) 10) で指定されたフォルダに作成されたログ ファイルを採取します。
■3.バッチを使用した採取手順
このバッチは GUI を使用した採取手順でご案内したデータコレクタセットを、お客様の環境 (インスタンス名) に合わせて自動で作成するものとなっております。
バッチの既定の設定は下記となります。
必要に応じて[◆3.1.データコレクタセットの名称、データコレクタセットのルートディレクトリ (データの保存場所) の変更方法]や[◆3.2.データコレクタセットのサンプルの間隔の変更方法]の手順を参考に変更ください。
データコレクタセットの名称:mytest
データコレクタセットのルートディレクトリ (データの保存場所) :bat ファイルと同じディレクトリの Log フォルダ配下
データコレクタセットのサンプルの間隔: 3 秒
また、データコレクタセットの作成後は、◆3.3.の手順を参考に正しくカウンタが登録されていることをご確認のうえ、データを取得いただくようお願いいたします。
◆3.1.データコレクタセットの名称、データコレクタセットのルートディレクトリ (データの保存場所) の変更方法
本手順は必須ではないため、必要に応じて実施してください。
採取用スクリプト (PerfCollector_v1.0.zip) 内の create.bat を編集し、下記の変数 collectorname, location の値を書き換えることで作成するデータコレクタセットの設定を変更します。
set collectorname=mytest
set location=.\logs
※データコレクタセット作成後に GUI で変更することも可能です。
◆3.2.データコレクタセットのサンプルの間隔の変更方法
本手順は必須ではないため、必要に応じて実施してください。
下記の [◆3.3.データコレクタセットのカウンター確認方法] の手順 1-3 を実施し、手順 4 の [プロパティ] の [サンプル間隔] で変更できます。
◆3.3.データコレクタセットのカウンター確認方法
1) [パフォーマンスモニター] を検索し、起動します。
2) 左ペインの [データコレクタセット] を展開します。
3) [ユーザー定義] を展開し、左ペインで変更したいデータコレクタセット (画像では mytest です) をクリックし、変更したい [パフォーマンスカウンター] (画像は mytest です) を右クリックし、プロパティを開きます。
4) [プロパティ] より現在追加されているパフォーマンスカウンターを確認します。
◆3.4.(実行方法)
1) 採取用スクリプト (PerfCollector_v1.0.zip) を資料採取対象のマシンの任意の場所にコピーし展開します。
2) [コマンドプロンプト] を検索し、[管理者として実行] より起動します。
3) ポップアップが表示されますので "はい" をクリックします。
4) タイトルに "管理者: コマンドプロンプト" が表示されていることをご確認します。
5) PerfCollector_v1.0 を展開したフォルダーに移動し、PerfCollector_v1.0 を以下のように実行します。
>create
6) コマンドプロンプトでエラーが返ってこないことを確認します。
7) [◆3.3.データコレクタセットのカウンター確認方法] を参照して、登録されたカウンタを確認します。
8 ) [■2.GUIを使用した採取手順] の手順 12 以降を参照して、情報採取を開始してください。
■4.最大サイズを指定してローテーションさせるオプションの設定
本手順は必須ではないため、必要に応じて実施してください。
1) [パフォーマンスモニター] を検索し、起動します。
2) 左ペインの [データコレクタセット] を展開します。
3) [ユーザー定義] をクリックし、変更したい [データコレクタセット] (画像は mytest です) を右クリックし、プロパティを開きます。
4) [停止条件] タブにて、"最大サイズ" チェックボックスをオンにし、ログ サイズを指定して [OK] ボタンをクリックします。
ここで指定したサイズが小さいと現象発生時の情報が上書きされる可能性がございますため、指定するサイズには十分ご注意ください。
※ 一定期間採取を実施していただき、その実績を基に設定する方法をご検討ください。
※ 循環設定での最大サイズの上限は 4GB 未満となります。そのため、最大サイズは 1GB ~ 3.5GB 程度に設定することをお奨めいたします。(画像は 2GB です。)
※ 循環設定した状態で OS を再起動すると、取得したパフォーマンスログが高い確率で破損するため、再起動前にデータコレクタセットでの採取を停止ください。
5) 変更したい [データコレクタセット] (画像では mytest です) をダブルクリックし、右ペインのパフォーマンス カウンタ DataCollector01 を右クリックしプロパティを選択します。
6) [ファイル] タブにて、[ログ モード] より "循環" を選択し、[OK] ボタンをクリックします。
以上の手順によって、設定ができました。
■5.特定のイベントが発生したタイミングでパフォーマンスログの採取を停止させる方法
本手順は必須ではないため、必要に応じて実施してください。
1) [タスクスケジューラ] を検索し、起動します。
2) 右ペインの [タスクの作成] をクリックします。
3) [タスクの作成] ウィザード [全般] より、タスクの名前を入力し、[ユーザーがログオンしているかどうかにかかわらず実行する(W)]と[最上位の特権で実行する(I)] にチェックを入れます。(画像はタスクの名前を test としています)
4) [タスクの作成] ウィザード [トリガー] -> [新規] で [新しいトリガー] ウィザードが開かれるので、[タスクの開始] より [イベント時] を選択し、イベントについての設定をします。
問題となる事象に関する[イベント ID]を入力します。また、[遅延時間を指定する] にチェックを付け、15分間を選びます。
5) [タスクの作成] ウィザード [操作] -> [新規] で [新しい操作] ウィザードが開かれるので、[操作] より [プログラムの開始] を選択し、
[設定] -> [プログラム/スクリプト] に cmd.exe と入力し、[引数の追加] に /C "logman stop xxx" を入力します。( xxx はデータコレクタセットの名前を入れます。画像では mytest というデータコレクタセットを指定しています)
設定が終わったら [新しい操作] ウィザード [OK] を押して、操作の作成を完成します。
6) [タスクの作成] ウィザード [条件] -> [電源] より、必要に応じて [コンピュータを AC 電源で使用している場合のみタスクを開始する] のチェックを外す。
7) [タスクの作成] ウィザード [OK] より、タスクの作成を完了する。
以上の手順によって、設定ができました。
上記手順で採取した情報をマイクロソフトのサポートまでお寄せいただきますようお願いいたします。
どうぞ、よろしくお願いいたします。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.