診断 SQL Server 2000 SP4 およびそれ以降のバージョンで詰まっているし、停止した I/O 操作を検出するため

文書翻訳 文書翻訳
文書番号: 897284
すべて展開する | すべて折りたたむ

目次

概要

データベース管理システム (DBMS)、SQL Server など、ファイル入出力 (I/O) の適時性の操作必要があります。詰まっているいずれかの次の項目を作成または問題の I/O を停止します。これらの問題は迅速に SQL Server の応答性とパフォーマンスに悪影響があります。
  • ハードウェアの障害
  • ハードウェアが正しく構成されていません。
  • ファームウェアの設定
  • フィルター ドライバー
  • 圧縮
  • バグ
  • その他の条件では、I/O パス
これらの I/O の問題次の現象が発生する可能性があります。
  • ブロック
  • ラッチ競合とタイムアウト
  • 応答時間が遅い
  • リソースの境界の拡大
SQL Server には Microsoft SQL Server 2000 Service Pack 4 で (SP4) 以降は、停止し、データベース I/O の読み取りおよび書き込みログ ファイル I/O の読み取りと書き込みの状態を保持することを検出するロジックが含まれます。入出力操作を 15 秒間以上保留されている場合は、SQL Server、次の手順を実行します。
  1. 操作が保留されていることを検出します。
  2. SQL Server のエラー ログにメッセージを書き込みます。メッセージのテキストは次のようです。

    2004-11-11 00:21:25.26 spid1 SQL Server 192 の設定されているものの 15 秒を超える時間がかかる IO 要求ファイル [E:\SEDATA\stressdb5.ndf] [stressdb] (7) データベースを完了するが発生しました。OS ファイル ハンドルは 0x00000000000074D4 です。最新の長い I/O のオフセット: 0x00000000022000"。

メッセージの説明

元に戻す全体を表示する
メッセージのテキスト説明
番号 設定されているもの読み取りまたは書き込み処理は、15 秒以内に完了しなかった I/O 要求の数。
ファイル情報完全なファイル名、データベース名、およびデータベース id (DBID) 番号。
ハンドルファイルのオペレーティング システム ハンドル。オペレーティング システム ハンドル デバッガーやその他のユーティリティと I/O 要求パケット (IRP) 要求を追跡する使ってできます。
オフセットI/O 操作の最後のオフセットのスタックまたは最後の I/O 操作を停止します。オフセット デバッガーやその他のユーティリティで IRP の要求の監視を支援する. します。

メモ 情報メッセージは、SQL Server のエラー ログに書き込まれます場合、I/O 操作されなくスタック停止または可能性があります。
この情報メッセージは、現在の負荷は、次の条件のいずれかが可能性があることを示しています。
  • ワークロードは、I/O パス機能を超えています。
  • ワークロードは、現在のシステムの機能を超えています。
  • I/O パス障害のソフトウェアをです。おそらく、ファームウェア、またはドライバーの問題。
  • I/O パスは、正しく動作していないハードウェア コンポーネントがあります。
SQL Server 2000年の I/O パターンの詳細については、次のマイクロソフト Web サイトを参照してください。
http://technet.microsoft.com/en-us/library/cc966500.aspx

詳細

I/O が詰まっていると停止した I/O

詰まっている I/O

詰まっている I/O は完了しない I/O 要求として定義されています。多くの場合、詰まっている I/O が詰まっている IRP です。スタックした I/O 条件を解決するには、通常する必要があります、コンピューターを再起動のようなアクションを実行します。スタックした I/O 条件では、通常、次のいずれかを示します。
  • ハードウェアの障害。
  • バグは、I/O パス ・ コンポーネントで。

停止した I/O

停止した I/O を実行して、I/O 要求として定義されています。ただし、I/O 操作を完了するのには、過剰な時間です。停止した I/O 現象は通常、次のいずれかの原因します。
  • ハードウェア構成。
  • ファームウェアの設定です。
  • トレースして解決するのには、ハードウェアまたはソフトウェアの製造元からの支援を必要とするフィルター ドライバーの問題。

SQL Server は I/O は停止し、記録および報告の I/O スタック

詰まっている、または停止した I/O の問題を含む多くの場合、毎年 Microsoft SQL Server のサポートを処理します。後で示すように、これらの I/O の問題はさまざまな方法で表示されます。I/O の問題を診断およびデバッグするのには、最も困難な問題のいくつかです。I/O の問題とお客様 Microsoft からのデバッグに膨大な時間とリソースが必要です。SQL Server 2000 sp4 およびそれ以降のバージョンが大幅に追加されて、レポート機能、I/O の問題を識別するために必要な時間を短縮します。

I/O 要求の記録、報告し、ごと、ファイルごとに設計されています。2 つの独立した操作は検出と詰まっているし、停止した I/O 要求の報告です。

記録

2 つの場所 SQL を記録行動がサーバーでは。最初の場所で記録が発生すると、位置、I/O 操作を実際に完了になります。I/O 要求を完了するために 15 秒以上を使用する場合は、レコード操作が発生します。レイジー ライターを実行すると、もう一方の場所に記録、されます。レイジー ライターを実行すると、レイジー ライターは、保留中のすべてのデータと、保留中のすべてのログをチェック ファイル I/O 要求します。15 秒のしきい値を超えた場合、レコード操作が発生します。

レポート作成

レポートは 5 分間以上離れて間隔で発生します。レポート ファイルに、次の I/O 要求が行われたときに発生します。前回のレポートでは、発生、レコード操作が発生し、5 分以上経過した場合、「概要」に記載メッセージが SQL Server のエラー ログに書き込まれます。

15 秒のしきい値は調整可能ではないです。ただし、トレース フラグ 830 の使用して失速と詰まっている I/O 検出無効にできますが、これを行うことはお勧めしません。

SQL Server を起動すると、検出を無効にするを使用して、- T830 のスタートアップ パラメーター。使用して、- T830 のスタートアップ パラメーターを検出が、SQL Server を起動するたびに無効になります。SQL は、現在実行しているサーバーのインスタンスの検出を無効にするには、次のステートメントを使用します。

dbcc traceoff (830,-1)

この設定は、SQL Server プロセスの寿命を効果的です。

メモ I/O 要求が停止またはスタックが 1 回だけ報告されます。これら 10 個のレポート メッセージが 10 個の I/O 要求が停止していることを報告した場合、もう一度は発生しません。次のメッセージが 15 の I/O 要求が停止していることを報告する場合は、15 の新しい I/O 要求が停止になることを意味します。

I/O 要求パケット (IRP) を追跡します。

SQL Server を読むにし、データを記述する、標準の Microsoft Windows API 呼び出しを使用します。たとえば、SQL Server、次の関数を使用します。
  • WriteFile
  • Readfile 関数
  • WriteFileScatter
  • ReadFileGather
読み取りまたは書き込み要求が I/O 要求パケット (IRP) として処理されます。IRP の状態を確認するには、以下の両方を使用します。
  • Microsoft プラットフォーム サポートの詳細について。
  • カーネル デバッガー。
IRP の IRP およびについてトレース、次のマイクロソフトの Web サイトと検索キーワード「IRP」を参照してください。
次の web サイト
メモ カーネルのデバッグ デバッグ操作を完了すると、システムを停止する必要があることができますので、カーネルのデバッグ、襲プロセスです。かどうかは、更新は次の項目を参照してくださいすることをお勧めします。
  • BIOS
  • ファームウェア
  • その他の I/O パス コンポーネント
その他のデバッグ操作を実行する前に、ハードウェアの製造元に問い合わせてください。デバッグ セッションは、サード パーティのドライバー、ファームウェア、またはフィルター ドライバーのコンポーネント可能性があります必要があります。

システムのパフォーマンスとクエリ操作を計画します。

全体的なシステムのパフォーマンスは I/O 処理で重要な役割を再生できます。停止した、または詰まっている I/O 操作のレポートを調査するとき、システムの全般的な状態を考慮に入れる必要があります。過度の負荷がシステム全体が遅くなる可能性があります。これには、I/O 処理が含まれます。この問題が発生した時点で、システムの動作は、根本的な問題の原因を決定する重要な要因です。たとえば、CPU 使用率が高い場合、または問題が発生すると CPU 使用率が高いままの場合は、これを非常に多くの CPU を他のプロセス悪影響を受けていることは、システム上のプロセスが使用されている考えられます。

パフォーマンス カウンター

I/O のパフォーマンスを監視するには、次のパフォーマンス カウンター I/O パスの特定の情報を確認してください。
  • 平均ディスク秒と転送
  • ディスク キューの平均長
  • Current Disk Queue Length
たとえば、SQL Server を実行しているコンピューターの平均ディスク秒と転送時間通常 15 未満のミリ秒です。平均ディスク秒と転送の値が上昇する場合は、I/O サブシステム最適が I/O 要求に対応していないことを示します。

SQL Server は頻度の高いディスク キューの長さをプッシュする非同期 I/O の能力を最大限に活用されるため、パフォーマンス カウンターに注意します。そのため、長いディスク キューの長さだけでは問題を示していません。

Windows のシステム モニターのカウンターを確認することができます"物理ディスク: ディスク バイト数/秒"各影響を受けるディスクし、」プロセス:: IO データ バイト/秒「カウンターに対するアクティビティの割合を比較して"プロセス: IO その他バイト数/秒"過剰な I/O を特定の一連のプロセスを生成しているかどうかを確認するには、各プロセスの要求。さまざまなその他の I/O 関連プロセスで使用可能なカウンター オブジェクトより詳細な情報が表示されますがあります。SQL Server のインスタンスをサーバー上で過度の IO 負荷であることを確認する場合は、「インデックスと並列処理」では、次のセクションを確認します。検出し、I/O ボトルネックを解決するための詳細については、「「「I/O ボトルネック」、MSDN のホワイト ペーパーを確認します。 SQL Server 2008年でのパフォーマンスの問題のトラブルシューティング または SQL Server 2005 でのパフォーマンスの問題のトラブルシューティング.

インデックスと並列処理

多くの場合、インデックスが存在しないため I/O のバーストが発生します。この現象は、I/O パスをプッシュできます。パスには、インデックスにするとウィザード (ITW) システムの I/O 負荷を解決するのに役立ちます。クエリ テーブル スキャンからの代わりにインデックスからメリットを享受または使用おそらくも、並べ替えまたはハッシュされる場合は、システムは次の利点得ることができます。
  • パフォーマンス上の利点は、クエリに直接アクションを完了するのには、物理 I/O が減少することに相当します。
  • データ キャッシュ内のページ数が少なく必要します。したがって、それらのページがデータ キャッシュでは、作業中のクエリに関連するままです。
  • 並べ替えとハッシュ インデックスが存在しない場合があるため、または統計情報が最新であるために使用されます。減らすことができます。 tempdb 使用して 1 つまたは複数のインデックスを追加することによって競合します。
  • リソースが減少することの並列処理を削減またはその両方。SQL Server 並列クエリの実行は保証されません、システム上の負荷があると見なされますので、直列実行用のすべてのクエリを最適化するが最適です。クエリを最適化するには、クエリ アナライザーを起動し、設定を sp_configure の値 のは、 並列処理の最大程度 オプション 1 は。シリアル操作として即座に実行するすべてのクエリが調整されている場合は、並列実行は多くの場合、優れた結果だけです。ただし、多くの並列実行時間が選択されているデータの量が同様であるため。不足しているインデックスは、大量のソートが発生する必要があります。並べ替え操作を実行している複数のワーカーが迅速な応答を作成します。ただし、これにより大幅にシステム上の負荷を増やすことができます。多くの労働者からの大きい読み取り要求は I/O バーストと CPU 使用率の向上複数の従業員の場合があります。高速に実行し、インデックスを追加する場合、または調整の別のアクションが発生した場合より少ないリソースを使用する多くの場合、クエリをチューニングできます。

実際の例の Microsoft SQL Server のサポート

次の例では、Microsoft SQL Server サポートとエスカレーションのプラットフォームのサポートによって処理されました。これらの例が期待停止し、スタックして I/O の状況についてのヘルプを運転を提供し、どのようにシステムを受ける可能性がありますまたは可能性があります応答してください。特定のハードウェアや、特定のリスクやリスクの増加をもたらすドライバーのセットがありません。すべてのシステムではこの点では同じです。

例 1: 45 秒のスタックは、ログの書き込み

SQL Server ログ ファイルの書き込み試行約 45 秒間定期的にスタックしてようになりました。ログ書き込みはタイムリーに終了できませんでした。この現象は 30 秒のクライアント タイムアウトを引き起こしたブロッキング条件を作成します。

コミット SQL Server を申請を提出したし、コミット ログ書き込み保留としてスタックになりました。クエリがロックを保持して続行するのには、他のクライアントからの着信要求をブロックするこの動作を発生します。その後、他のクライアント タイムアウトを開始しました。クエリ タイムアウトが発生すると開いているトランザクションをロールバックするのには、アプリケーションが設計されていないために問題が悪化します。これは何百ものロックを保持していた未処理のトランザクションを作成しました。そのため、ブロックしている深刻な状況が発生しました。

トランザクション処理ブロックの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
224453理解し、SQL Server 7.0 または 2000年のブロッキングの問題を解決します。
アプリケーション接続プーリングを使用して Web サイトを処理します。多くの接続をブロックするようになりましたと、Web サイトより多くの接続を作成します。これらの接続をブロックするようになりましたし、サイクルを継続します。

約 45 秒後に、ログの書き込みが完了しました。ただし、この時点で、数百の接続バックアップ。ブロッキングの問題を SQL Server と、アプリケーションのリカバリに要する時間を数分でが発生しました。アプリケーションの問題を組み合わせると、システムで停止した I/O 条件は非常に負の値に影響を与える必要があります。
解決方法
問題は詰まっている I/O 要求は、ホスト バス アダプター (HBA) ドライバーで追跡されました。コンピューターに複数の HBA カード フェイルオーバー ・ サポート必要があります。1 つの HBA の背後にあるか、ストレージ エリア ネットワーク (SAN) と通信していない場合は、「再試行」フェールオーバーする前にタイムアウト値は 45 秒に構成されました。タイムアウトが発生すると、2 番目の HBA には、I/O 要求が送信されました。2 番目の HBA 要求を処理し、瞬時に終了しました。このような失速状態を防ぐには、「再試行」のフェイル オーバーの前に 5 秒に設定、ハードウェアの製造元を推奨しました。

例 2: フィルター ドライバーの介入

多くのウイルス対策ソフトウェアやバックアップ製品は、入出力フィルター ドライバーを使用します。これらの入出力フィルター ドライバーは、I/O 要求のスタックの一部になるし、IRP 要求へのアクセスがあります。マイクロソフト製品サポート サービスは、さまざまな問題を作成するバグを I/O 条件を保持または I/O 条件フィルター ドライバー実装の停止してきました。

このような条件の 1 つのバックアップをバックアップが行われたときに開いていたファイルのバックアップを許可する処理は、フィルター ドライバーでした。システム管理者には SQL Server データ ファイルのディレクトリには内のファイルのバックアップの選択が含まれていた。バックアップが発生すると、バックアップ、バックアップの開始時にファイルの適切なイメージを収集しようとしました。こう I/O 要求を遅延します。I/O 要求が、ソフトウェアによって処理されたように 1 つずつのみ実行できました。

バックアップを開始すると、I/o の SQL Server は、一度に 1 つずつ行う必要があるので SQL Server のパフォーマンスが大幅にドロップ。問題を合成するには、I/O 操作を非同期的に実行できませんでしたように「一度に 1 つずつ」ロジックをしました。I/O 要求を送信して続行する SQL Server を期待すると、I/O 要求が完了するまでそのため、ワーカーが読み取りまたは書き込み呼び出しでスタックしました。先読みを SQL Server など、タスクの処理に効果的にフィルター ドライバーの動作が無効になりました。また、場合でも、バックアップが完了したときフィルター ドライバーの他のバグ「一度に 1 つずつ」アクション プロセスで、まま。SQL Server のパフォーマンスを回復する唯一の方法は、閉じて、データベース、またはファイル ハンドルされたリリースされ、フィルター ドライバー操作なしを獲得 SQL Server を再起動しました。
解決方法
この問題を解決するには、SQL Server データ ファイルは、ファイルのバックアップ ・ プロセスから削除されました。ソフトウェア製造元も「一度に 1 つ」モードでファイルのままに問題を修正します。

例 3: 非表示エラー

多くのエンド システムに高い負荷分散または同様の作業を処理するために、マルチ チャネルの I/O パスをあります。マイクロソフト製品サポートに負荷分散ソフトウェアの I/O 要求が失敗したが、ソフトウェアのエラー条件を正しく処理しない問題が見つかりました。ソフトウェアは、無限の再試行を試みることができます。I/O 操作に固定されて、SQL Server は、指定されたアクションを完了できません。前述の条件は、ログを書き込むように、このような条件は、システムの wedges 後何が悪いシステムの動作に発生します。
解決方法
この問題を解決するには、SQL Server の再起動は必要です。ただし、場合がありますオペレーティング システム処理を復元するのには再起動する必要があります。I/O 仕入先から、ソフトウェア更新プログラムを入手することもお勧めします。

例 4: リモート記憶域、ミラーリング、Raid ドライブ

多くのシステム ・ ミラーリングを使用またはデータの損失を防ぐためにも同様の手順を実行します。ベースのソフトウェア ・ ミラーリングを使用するシステムのものし、ハードウェアを示します。通常、製品サポート サービスにこのようなシステムで検出された遅延時間の増加です。

全体的な I/O 時間の増加は、I/O が完了したと判断する前に、ミラーに I/O を完了する必要があるときに発生します。リモート ・ ミラーのインストールでは、ネットワークの再試行参加することができます。ドライブの障害が発生して、raid システムを再構築すると、I/O パターンも中断できます。
解決方法
厳密な型の構成設定は、ミラーまたは raid 再構築操作の待ち時間を減らす必要があります。

例 5: 圧縮

マイクロソフトは、7.0 の Microsoft SQL Server または Microsoft SQL Server 2000年のデータ ファイルとログ ファイルを圧縮ドライブをサポートしていません。NTFS 圧縮は NTFS 圧縮が書き込み先のログ (WAL) プロトコルを中断するため SQL Server は安全ではありません。NTFS 圧縮は各 I/O 操作の処理の向上も必要があります。圧縮"one、時に"深刻なパフォーマンスの問題が発生する原因とする動作と同じように作成されます。
解決方法
この問題を解決するには、データ ファイルとログ ファイルを圧縮解除します。

追加のデータ ポイント

提供される待機の種類の情報を sysprocesses システム テーブルは、I/O ボトルネックを診断する際に役立つ場合があります。バッファー I/O ラッチ待機の種類 writelog 待機 I/O パスのパフォーマンスを調査するための指標です。

待機の種類の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
822101SQL Server 2000年および SQL Server 2005 の master.dbo.sysprocesses テーブル内の waittype と lastwaittype 列の説明

関連情報

231619 SQLIOStress ユーティリティを使用して、SQL Server などのディスク サブシステムを強調する方法
826433 その他の SQL Server 診断報告されない入出力の問題を検出するために追加
230785 7.0 の SQL Server、SQL Server 2000、および SQL Server 2005 のログ記録とデータ記憶アルゴリズムは、データの信頼性を拡張します。
SQL Server、Microsoft SQL Server、Always-On、ストレージ ソリューション レビュー プログラムで概説されている '確実な配信を安定したメディア' をサポートするために、システムする必要があります。参加者SQL Server データベース エンジン用の入出力の要件の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
967576Microsoft SQL Server データベース エンジンの入出力の要件

プロパティ

文書番号: 897284 - 最終更新日: 2011年8月3日 - リビジョン: 7.0
キーワード:?
kbinfo kbtshoot kbsqlserv2000sp4fea kbmt KB897284 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:897284
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com