現在オフラインです。再接続するためにインターネットの接続を待っています

SQL Server の診断のため停止していると詰まっている I/O 操作を検出

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:897284
概要
など、SQL Server のデータベース管理システム (DBMS) は、操作をファイルの入出力 (I/O) の適時性に依存します。次の項目のいずれかは、詰まっているか停止している I/O 処理が発生して、SQL Server の応答性とパフォーマンスに悪影響を及ぼす影響を与える可能性があります。

  • ハードウェアの障害
  • 正しく構成されているハードウェア
  • ファームウェアの設定
  • フィルター ドライバー
  • 圧縮
  • バグ
  • I/O パスの他の条件
これらの I/O の問題が原因で、次の現象が発生する可能性があります。

  • ブロック
  • ラッチ競合とタイムアウト
  • 応答時間が遅い
  • リソースの境界の拡大
SQL Server に Microsoft SQL Server 2000 Service Pack 4 (SP4) で開始、停止し、データベース I/O の読み取りと書き込みとログ ファイルの I/O の読み取りと書き込みの状態が保持されていることを検出するロジックが含まれます。I/O 操作が保留中を 15 秒間以上、SQL Server は、次の手順を実行します。

  1. 操作が保留されていることを検出します。
  2. 情報メッセージを SQL Server エラー ログに書き込みます。

    ログ メッセージのテキストは次のようになります。

    2004-11-11 00:21:25.26 spid1 SQL Server データベース [stressdb] (7) でのファイルの [E:\SEDATA\stressdb5.ndf] に終了する 15 秒よりも長くかかって IO 要求の 192 回目の定期が発生しました。OS ファイル ハンドルは、0x00000000000074D4 です。最新の長い I/O のオフセット: 0x00000000022000"です。

情報メッセージの説明

メッセージ テキスト説明
番号 > 回目の定期読み取りまたは 15 秒以内に書き込み操作が完了しませんでしたの I/O 要求の数です。
ファイル情報完全なファイル名、データベース名、および、データベース id (DBID) 番号です。
ハンドルファイルのオペレーティング システム ハンドル。I/O 要求パケット (IRP) 要求を追跡するためにデバッガーやその他のユーティリティを使用してオペレーティング システム ハンドルを使用できます。
オフセット最後のオフセットには、I/O 操作がスタックしている、または最後の I/O 操作を停止しています。IRP の要求を追跡するためのデバッガーやその他のユーティリティを使用してオフセットを使用できます。

注: <b>情報メッセージは、SQL Server エラー ログに書き込まれますが、I/O 操作が不要になった詰まっているいたり停止しています。
この情報メッセージでは、現在の負荷が発生しているある以下の条件のいずれかのことを示します。

  • 作業負荷が I/O パス機能を超えた。
  • ワークロードでは、現在のシステムの機能を超えるは。
  • I/O パスが誤動作しているソフトウェアにはおそらくファームウェアまたはドライバーの問題です。
  • I/O パスは、ハードウェア コンポーネントが正常に機能しません。
SQL Server 2000年の I/O パターンの詳細については、次のマイクロソフト web サイトを参照してください。注: <b>この TechNet の記事は、Microsoft SQL Server 2005年およびそれ以降のバージョンにも適用されます。
詳細

詰まっている 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 動作を停止しているは、通常次の理由の 1 つにより発生します。

  • ハードウェアの構成
  • ファームウェアの設定
  • ハードウェアまたはソフトウェアのベンダーを追跡し、解決の支援を必要とするフィルター ドライバーの問題

SQL Server が I/O を停止し、記録、および報告の I/O を停止

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

レポートの作成および I/O 要求の記録は、ファイルごとに設計されています。検出と停止している、詰まっている I/O 要求の報告は、2 つの個別の操作です。

記録

SQL Server で、レコード操作が発生する 2 つの瞬間があります。最初は、I/O 操作が実際に終了したときです。I/O 要求を完了するのには 15 秒を超える場合、レコード操作が発生します。2 次モーメントは、レイジー ライターを実行するときです。レイジー ライターが保留中のすべてのデータと、保留中のすべてのログをチェック、レイジー ライターが実行されると、I/O 要求をファイルします。15 秒のしきい値を超えた場合、レコード操作が発生します。

レポート

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

15 秒のしきい値は調整可能ではありません。ただし、するには行うことがトレース フラグ 830, を使用して停止しているか、詰まっている I/O 検出をしないようにできます。

SQL Server の起動時に検出を無効にするを使用して、 -T830起動時のパラメーターを SQL Server を起動するたびに、検出を無効にします。現在実行されている SQL Server のインスタンスの検出を無効にするには、次のステートメントを使用します。

(830,-1)、dbcc traceoff
この設定は、SQL Server プロセスの有効期間に対してのみ有効です。

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

I/O 要求パケット (IRP) の追跡

SQL Server は、データを読み書きするための標準の Microsoft Windows API 呼び出しを使用します。たとえば、SQL Server は、次の関数を使用します。

  • WriteFile
  • Readfile 関数
  • WriteFileScatter
  • ReadFileGather
読み取りまたは書き込み要求は、I/O 要求パケット (IRP) として、Windows によって処理されます。IRP の状態を確認するのには、次の両方を使用します。

  • Microsoft プラットフォームのサポート
  • カーネル デバッガー
IRP および IRP の詳細についてはトレースでは、次のマイクロソフト web サイトおよび「IRP」というキーワードで検索に移動します。注: <b>カーネル デバッグできる必要があるためデバッグ操作を完了するのにはシステムを停止する、カーネルのデバッグ、割り込み処理できます。次の項目のすべての利用可能な更新を確認することをお勧めします。

  • BIOS
  • ファームウェア
  • その他の I/O パス コンポーネント
追加のデバッグ操作を実行する前に、ハードウェアの製造元にお問い合わせください。デバッグ セッションでは、サードパーティ製のドライバー、ファームウェア、またはフィルター ドライバーのコンポーネントが含まれます可能性があります。

システムのパフォーマンスとクエリ プランの操作

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

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

I/O のパフォーマンスを監視するには、I/O パスの詳細については、次のパフォーマンス カウンターを確認します。

  • 平均ディスク秒と転送
  • 平均ディスク キューの長さ
  • 現在のディスク キューの長さ
SQL Server を実行しているコンピューターの平均ディスク秒と転送時間は通常 15 ミリ秒未満です。平均ディスク秒と転送の値が上昇する場合、I/O サブシステムが最適に対応していない I/O 要求を示します。

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

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

インデックスと並列処理

多くの場合、インデックスがないために、I/O のバーストが発生します。この現象は、I/O パスをプッシュ深刻なことができます。インデックスにするとウィザード (ITW) を使用するパスは、システム上の I/O 負荷を解決することができます。クエリ、テーブル スキャンの代わりにインデックスを利用するかなど、並べ替えまたはハッシュを使用している場合、システムできる次の利点が。

  • クエリのパフォーマンス上の利点を直接作成するアクションを完了するために必要な物理 I/O を削減することが行われます。
  • データ キャッシュ内のページ数が引き継がれる必要があります。したがって、データ キャッシュ内のページは、作業中のクエリに関連するままです。
  • 並べ替えとハッシュは、インデックスが不足している可能性があるため、または統計情報が期限切れのために使用されます。小さくことがあります。 tempdb 使用と 1 つまたは複数のインデックスを追加することによる競合を回避します。
  • リソース、並列処理、あるいはその両方で削減することが行われます。SQL Server で、並列クエリの実行が保証されないため、システムにロードされているので、直列実行のすべてのクエリを最適化することをお勧めします。クエリを最適化するには、クエリ アナライザーを起動し、設定、 sp_configure の値 の、 並列処理の最大限度 オプションを1にします。シリアル操作として即座に実行するすべてのクエリがチューニングは、並列実行が多くの場合より良い結果だけです。ただし、データ量が大きいだけであるため並列実行時間の多くが選択します。不足しているインデックスは、大量のソートを実行する必要があります。並べ替え操作を実行している複数の作業者より迅速な応答を作成します。ただし、この操作は、システム上の負荷を大幅に向上することができます。多くの作業者からの大きな読み取り要求は、複数の作業者からの CPU 使用率の向上と、I/O バーストを可能性があります。高速に実行し、インデックスを追加した場合、または別のチューニング処理が発生した場合より少ないリソースを使用する、何度もクエリをチューニングすることができます。

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

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

例 1: ログの書き込みを 45 秒間に滞留しています。

SQL Server のログ ファイルを定期的に書き込むときに、約 45 秒の固定します。ログの書き込みは、時間どおりに終了しません。この動作は、30 秒のクライアント タイムアウトを引き起こしたブロッキング条件を作成します。

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

トランザクションを処理して、ブロッキングの詳細については、次のマイクロソフト サポート技術情報資料を参照してください。アプリケーションは、接続プーリングを使用して web サイトをサービスします。多くの接続がブロックされている、web サイトより多くの接続が作成されます。これらの接続がブロックされていると、サイクルが継続します。

約 45 秒後に、ログの書き込みが終了します。ただし、この時点では、数百の接続がバックアップします。ブロッキングの問題は、SQL Server とアプリケーションのリカバリ時間の数分を発生します。アプリケーションの問題を組み合わせると、停止した I/O 条件を使うと、システムに非常に悪い影響があります。
解決方法
この問題は、ホスト バス アダプター (HBA) ドライバーでは、詰まっている I/O 要求を追跡しました。コンピューターには、複数の 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 要求を遅延します。ソフトウェアによって処理されるが、一度に 1 つだけを完了するのには、I/O 要求が許可されていました。

バックアップが開始されると、SQL Server パフォーマンス ドロップ大幅に SQL Server の I/o が 1 つずつを終了する強制的に実行されたためです。問題を複雑には、「1 つずつ」のロジックは、I/O 操作を非同期的に実行できませんでしたようにでした。したがって、SQL Server が想定されるは、I/O 要求をポストして、続行するのには、作業者当時の読み取りまたは書き込み呼び出しで 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 の再構築操作の待ち時間を短縮する必要があります。

詳細については、次のように確認します。 ユーザー データベースのリモート ・ ミラーリングをサポートするために SQL Server の要件.

例 5: 圧縮

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

詳細については、次のように確認します。 圧縮ボリューム上の SQL Server データベースのサポートの説明.

追加のデータ ポイント

立ちます動的管理ビュー (DMV) の PAGEIOLATCH_ * とログへの書き込みの待機は、I/O パスのパフォーマンスを調査する主要評価指標です。PAGEIOLATCH 待機が重要な場合は、I/O サブシステム上に SQL Server が待機していることを意味します。PAGEIOLATCH 待機量が標準的な動作を必要とします。ただし、PAGEIOLATCH、待ち時間が平均値が常に 10 ミリ秒 (ms) を超える場合は、負荷の下で I/O サブシステムは、理由を調べる必要があります。詳細については、次のドキュメントを参照してください。



システムをサポートしている「保証安定したメディアへの配信」で説明したように SQL Server が必要です SQL Server I/O の信頼性プログラムの要件.SQL Server データベース エンジンの入力と出力の要件の詳細については、次のマイクロソフト サポート技術情報資料を参照してください。

IO イベント Id 833

警告: この記事は自動翻訳されています

プロパティ

文書番号:897284 - 最終更新日: 10/01/2015 04:22:00 - リビジョン: 8.0

Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Enterprise Core, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Business Intelligence, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbinfo kbtshoot kbsqlserv2000sp4fea kbmt KB897284 KbMtja
フィードバック