福原 宗稚
SQL Developer Support Engineer
パフォーマンス ログとは
Windows に付属のツールを使用して採取する、Windows や SQL Server 等のパフォーマンスに関する情報です。事前に指定したカウンタ (よく言われる「CPU使用率」を示す Processor%Processor Time、「空きメモリ」を示す Memory%Available Bytes 等)を、一定間隔で記録します。
例えば、SQL Server へのクエリがタイムアウトする、SQL Server のパフォーマンスが低下する、SQL Server への接続が切断されることがあるといった問題の場合、「サーバーの負荷が高い」可能性が考えられます。この「サーバーの負荷が高い」という点から一歩踏み込んで、CPU使用率が高いのか、メモリが枯渇しているのか、ディスク IO の量が多く待ちとなっているのかといったボトルネックを確認するために使用します。一般的には、通常時と、現象発生時のカウンタの値を比較し、現象発生時に突出して高くなっている値があれば、それが現象と関係している可能性が高いと判断できます。
これさえあればパフォーマンスの問題が解決できる!とついつい期待してしまいますが、これまでの経験からは、あくまでも補助的な情報であり、場合によっては威力を発揮するという印象があります。
現象発生時に、カウンタがこの値を示していたということは分かりますが、たまたまその値を示していただけで現象に関係していないといった場合や、このサーバーのスペックや使われ方によっては、この値を示していても問題がないという場合も数多くあります。パフォーマンスログ単体で見ると問題を見誤る可能性がありますので、注意が必要です。
一方、パフォーマンスログがなければ、エラーログにこういうエラーが出力されているので、サーバーの負荷が高かった可能性がある、という結論で終わるところが、パフォーマンスログがあることで、その時実際には特定のディスクのIOが非常に高かったということや、あるアプリケーションがメモリを大量に消費していたといった一歩踏み込んだ調査ができるため、その結果に応じた対処まで確立できる可能性が出てきます。
考慮する点
採取にあたって、考慮する点は大きく2つあります。
1) 採取するカウンタ
調査対象である問題によって、採取するカウンタは変わってきます。もっとも避けなければならないのは、見たいカウンタが足りなかったので、取り直しが発生するということです。パフォーマンスカウンタは、Windows に付属しておりスケジュール実行やファイルのローテーションなど柔軟に設定でき、かつ採取時の負荷も比較的低いため、発生頻度が低い現象でも常時設定しておいて、現象が発生した場合には採取するという使い方もされます。
そのため、取りこぼしがないように、少し多すぎるかなと思われるくらいの種類のカウンタをまずは採取するのが良いと思います。そして、問題が絞り込めて来た場合には、徐々にカウンタを絞っていくのがお勧めです。
SQL Server に関する調査で使用するカウンタについては、今後公開するパフォーマンスンログの確認方法でご案内する予定です。
2) 採取間隔
こちらも調査対象である問題によって、採取間隔は変わってきます。現象が発生している間に、可能であれば、2回以上の記録があることが望ましいです。最低限1回の記録は必須ですが、1回の記録の場合には、現象と関係あるのか、もしくは現象と関係なくたまたまその値となっていただけなのかという判断が難しいためです。現象が発生している間に記録されている2回の記録や3回の記録がすべてその値であるということなれば、その値となっていることが現象と関係あるという可能性が非常に高くなります。
例えば、1分くらい継続する現象の場合には、15秒や20秒間隔で採取します。また、15秒くらい継続する現象の場合には、5秒間隔で採取します。最短で1秒間隔まで設定することが可能です。特定の現象について調査を行う場合に1秒単位といった設定を行う場合がありますが、定常的な監視で1秒間隔での採取は一般的には不要です。
注意事項
ログファイルを出力するディスクは、調査対象となる SQL Server への影響を避けるため、可能であれば、SQL Server のデータベース ファイルが存在しないドライブを指定します。
採取するカウンタ数、採取間隔、採取する時間によって、ログファイルが大きくなることが予想されますので、実行前にログファイルが生成されるドライブには十分な空き領域があることを確認します。
設定手順(Windows Server 2003, Windows Server 2003 R2)
1. スタートメニューから、[すべてのプログラム] - [管理ツール] - [パフォーマンス] を選択します。
もしくは、スタートメニューから、[ファイル名を指定して実行] で、perfmon と入力します。
2. パフォーマンス モニタが起動したら、[パフォーマンス ログと警告] - [カウンタ ログ] を右クリックし、[新しいログの設定] を選択します。
3. [新しいログの設定] ダイアログで、任意の名称を入力します。
4. [全般] タブで、[カウンタの追加] ボタンをクリックします。
5. [次のコンピュータからカウンタを選ぶ] で対象のサーバーが表示されていることを確認します。採取するカウンタを [パフォーマンス オブジェクト]、[すべてのカウンタ] もしくは [一覧からカウンタを選ぶ]、[すべてのインスタンス] もしくは [一覧からインスタンスを選ぶ] からそれぞれ選択し、[追加] ボタンをクリックして追加します。全てのカウンタを追加し終えたら、[閉じる] をクリックします。
6. 追加したカウンタは、[カウンタ] 部分から確認できます。続いて、[データのサンプル間隔] で、カウンタを採取する間隔を設定します。
7. [ログ ファイル] タブでは、ファイルの種類や出力先等を必要に応じて変更します。
8. [スケジュール] タブでは、採取開始や終了を行うためのスケジュール設定を行います。既定のスケジュール設定では、設定完了後即座に採取が開始されます。
9. [OK] をクリックして、設定を完了します。
10. 該当のログを右クリックし、[停止] を選択することで、採取を停止します。また、[開始] を選択することで、採取を開始します。
※ logman start <ログの名称> コマンドで採取開始、logman stop <ログの名称> コマンドで採取停止を行うこともできます。例えば、バッチ処理の開始前に採取開始し、バッチ処理の終了後に採取停止するといった場合に便利です。(logman コマンドの詳細は、コマンドプロンプトから、logman /? を実行することで確認できます。)
開始例 : logman start Performance
停止例 : logman stop Performance
設定手順(Windows Server 2008, Windows Server 2008 R2)
1. スタートメニューから、[すべてのプログラム] - [管理ツール] - [パフォーマンス モニター] を選択します。(Windows Server 2008 の場合は、[信頼性とパフォーマンス モニタ] という名称になります。)
もしくは、スタートメニューから、[ファイル名を指定して実行] で、perfmon と入力します。
2. パフォーマンス モニター が起動したら、[データ コレクター セット] - [ユーザー定義] を右クリックし、[新規作成] – [データ コレクター セット] を選択します。
3. [この新しいデータ コレクター セットの作成方法を選択してください。] 画面で、任意の名称を入力し、[手動で作成する] を選択し、[次へ] をクリックします。
4. [含めるデータの種類を選択してください。] 画面で、[データログを作成する]、[パフォーマンス カウンター] を選択し、[次へ] をクリックします。
5. [記録するパフォーマンス カウンターを選択してください。] 画面で、[追加] ボタンをクリックします。
6. [次のコンピューターからカウンターを選んでください] で対象のサーバーが選択されていることを確認します。採取するカウンタをパフォーマンスオブジェクトの一覧���[選択したオブジェクトのインスタンス] からそれぞれ選択し、[追加] ボタンをクリックして追加します。全てのカウンタを追加し終えたら、[OK] をクリックします。
7. 追加したカウンタは、[パフォーマンス カウンター] 部分から確認できます。続いて、[サンプルの間隔] で、カウンタを採取する間隔を設定し、[次へ] をクリックします。
8. [データの保存場所を選択してください。] 画面では、ログの保存先を指定し、[次へ] をクリックします。
9. [データ コレクター セットを作成しますか?] 画面では、[保存して閉じる] を選択し、[完了] をクリックします。
10. 該当のデータ コレクター セット を右クリックし、[開始] を選択することで、採取を開始します。また、[停止] を選択することで、採取を停止します。
※ logman start <ログの名称> コマンドで採取開始、logman stop <ログの名称> コマンドで採取停止を行うこともできます。例えば、バッチ処理の開始前に採取開始し、バッチ処理の終了後に採取停止するといった場合に便利です。(logman コマンドの詳細は、コマンドプロンプトから、logman /? を実行することで確認できます。)
開始例 : logman start Performance
停止例 : logman stop Performance
※ データ コレクター セット を右クリックし、[プロパティ] を選択することで、プロパティを表示することができます。データ コレクター セットのプロパティでは、ファイルの種類や出力先等の変更、スケジュールの設定等を行うことができます。
★ SQL Server トラブルシューティング 6 回シリーズのご案内★ 本記事は、第 2 回目となります。他の記事は以下をご参照ください。 第1回 SQL Server のログ、イベントログの確認方法 (03/30 UP) |