MSSQLSERVER_17883
適用対象: SQL サーバー
詳細
属性 | Value |
---|---|
製品名 | SQL Server |
イベント ID | 17883 |
イベント ソース | MSSQLSERVER |
コンポーネント | SQLEngine |
シンボル名 | SRV_SCHEDULER_NONYIELDING |
メッセージ テキスト | プロセス %ld:%ld:%ld (0x%lx) ワーカー 0x%p が、スケジューラ %ld で応答を停止している可能性があります。 Thread creation time: %I64d. スレッド CPU 概算使用時間: カーネル %I64d ミリ秒、ユーザー %I64d ミリ秒。 プロセスの使用率 %d%%。 システムのアイドル状態 %d%%。 間隔: %I64d ミリ秒。 |
説明
スケジューラで発生しないスレッドに問題がある可能性があることを示します。 このエラーは、SQL Server のオペレーティング システムの状態、環境の問題、またはソフトウェアの問題、または SQL Server が実行に十分なサイクルを取得していない場合に発生する可能性があります。 このエラーは、スレッドが最終的に生成された場合に消え去る可能性があります。
ユーザー アクション
エラー メッセージ情報を見ると、特定の動作が発生することがわかります。 次に例を示します。
ユーザー モードの時間が早く上昇し続けた場合、原因として考えられるのは、SQL Server エンジンの無制限のループが原因で、適切に生成されない可能性があります。
カーネル モードの時間がすぐに上昇する場合、スレッドはオペレーティング システムでほとんどの時間を費やしており、この動作の根本原因を特定するためにカーネル デバッグが必要です。
カーネル時間とユーザー時間がすぐに増加しない場合、スレッドは、
WaitForSingleObject
、Sleep
、WriteFile
、ReadFile
などの API 呼び出しが返されるのを待っている可能性があります。 または、スレッドがオペレーティング システムによってスケジュールされていない可能性があります。 API ストール状態では、通常、その根本原因を特定するためにカーネル モードデバッグが必要です。System Idle %
が低く、Process Utilization %
が低い場合は、SQL Server で十分な CPU サイクルが得られない可能性があります。 システム上の他のアプリケーションの CPU 使用率を確認します。 また、システムでページングが行われるかどうかを確認します。SELECT * FROM sys.dm_os_ring_buffers
を実行すると、さらに詳細な情報を得ることもできます。kernel + user
時間が低くてもProcess Utilization %
が高い場合、エラー状態は、プリエンプティブ スレッドがすべての CPU (ガベージ コレクションなど) を消費していることを示している可能性があります。
情報とシステム使用率とアイドル時間を組み合わせると、問題の性質に関する分析情報が得られます。
このエラー状態を生成する検出ロジックと一般的な理由については、「 エラー 17883、17884、17887、および 17888 の診断と修正方法を参照してください。