A15:TROUBLE SHOOTING
TIPS
FROM SUPPORT TEAM
Takashi Honma
Support Escalation Engineer
Microsoft SQL Server Support
A15:俺の SQL SERVER が、意味
不明なダンプを出力してるなん
て許せない
Takashi Honma
Support Escalation Engineer
Microsoft SQL Server Support
CONTENTS
 Who’s Takashih?
 セッションの目的
 Dump file について
 Access Violation
 Assertion
 Latch Timeout
 Non-yielding Sched...
WHO’S TAKASHIH?
 経歴
 1996年4月 東芝系子会社入社。Oracle 等をバックエンドとした開発を
担当
 2001年5月 Microsoft 入社。SQL Server サポートに配属。今に至る
 SQL Serv...
セッションの目的
 現行サポートされるSQL Server では、多くの場面で診断用のダンプが
出力される
 運用において出力されたダンプが、何の現象の診断のために出力され
たかを知ることで、早急に対処が必要な状況なのか判断が行える
 ま...
DUMP FILE について(1)
 診断用のダンプは、SQL Server の Log フォルダに
SQLDump0001.mdmp という形式のファイル名で出力される
 このファイルを発見したら、まず ERRORLOG の該当時間帯の出...
DUMP FILE について(2)
DUMP FILE について(3)
 出力される主なダンプファイル
 Access Violation
 Assertion
 Latch Timeout
 Non-yielding Scheduler
 Deadlocked Sc...
DUMP FILE について(3)
 出力される主なダンプファイル
 Access Violation
 Assertion
 Latch Timeout
 Non-yielding Scheduler
 Deadlocked Sc...
ACCESS VIOLATION(1)
ACCESS VIOLATION(2)
 Access Violation(AV) は、アクセス許可されていないメモリへの読み
取り、書き込みが行われた際に、OS側が発生させる例外
 SQL Server は、全ての例外をハンドリングしてい...
ACCESS VIOLATION(3)
 想定される原因
 データベース破損
 SQL Server の不具合
 SQL Server のプロセス空間内でのメモリ破損
 対応
 データベースの整合性確認
 SQL Server の...
ASSERTION(1)
ASSERTION(2)
 Assertion は、SQL Server がコード上で条件がTrueであることを確認
している処理。条件が False であった場合、ダンプを出力する。
 OS側がトリガするAVなどの例外とは異なり、SQL ...
ASSERTION(3)
 想定される原因
 データベース破損
 SQL Server の不具合
 SQL Server のプロセス空間内でのメモリ破損
 対応
 データベースの整合性確認
 公開情報の確認
 ハードウェアのチェ...
LATCH TIMEOUT(1)
LATCH TIMEOUT(2)
 Latch は SQL Server が内部で使用する排他オブジェクト
 Lock と異なりユーザが制御できない
 通常300秒でTimeoutする
 必ずダンプを出力するのではなくラッチの種類等によ...
LATCH TIMEOUT(3)
 想定される原因
 パフォーマンス問題
 MSSQLSERVER_846
 MSSQLSERVER_847
 SQL Server の不具合
 対応
 ボトルネックの調査
 SQL Server...
NON-YIELDING SCHEDULER(1)
NON-YIELDING SCHEDULER(2)
 まずは、SCHEDULERについて理解することが必要
SCHEDULER
 SQL Server が CPU 毎に1つ作成するオブジェクトで、スレッドを管理
 この Scheduler を獲得したスレッドのみが処理を行える
 Worker Threads が各 Scheduler に割り当て...
NON-YIELDING SCHEDULER(3)
 前述のSchedulerを1つの処理が専有した場合、同じ Scheduler を共
有する他の処理が動作できない
 この状態が特定のスケジューラーで1分以上継続している状態を検出し
た際...
NON-YIELDING SCHEDULER(4)
 想定される原因
 パフォーマンス問題(特にディスク)
 SQL Server の不具合
 対応
 ボトルネック調査
 公開情報の確認
DEADLOCKED SCHEDULERS(1)
DEADLOCKED SCHEDULERS(2)
 Non-Yielding Scheduler と同様に Scheduler の状態を示す
 エラー17884で定義
 すべての Scheduler で、スレッドが使い果たされて、スレッド...
DEADLOCKED SCHEDULERS(3)
 想定される原因
 パフォーマンス問題(ブロッキング)
 一般的には、重度のブロッキングによって発生
 SQL Server の不具合
 対応
 ブロッキングの調査
 公開情報の確認
NON-YIELDING RESOURCE
MONITOR(1)
NON-YIELDING RESOURCE
MONITOR(2)
 ResourceMonitor は、SQL Server のコンポーネントの1つで、メモリ
プレッシャーの状況下で、メモリリソースの管理を行う
 このコンポーネントが何らか...
NON-YIELDING RESOURCE
MONITOR(3)
 想定される原因
 パフォーマンス問題(メモリ不足)
 一般的には、メモリ不足の状況下でメモリ操作に時間が掛かる状況で、その他
のメモリ不足を示すエラーと共に出力される
...
NON-YIELDING IOCP LISTENER(1)
NON-YIELDING IOCP LISTENER(2)
 IOCP LISTENER と呼ばれるスレッドが、パケットのI/Oを管理している
 このスレッドが停止すると、SQL Server との通信が停止する
 この状況を検出した場合...
NON-YIELDING IOCP LISTENER(3)
 想定される原因
 外的要因
 パフォーマンス問題(メモリ不足)
 SQL Serverの不具合
 対応
 SQL Server の設定確認
 メモリ使用状況の確認
 ...
まとめ
 出力されたダンプの種類に応じて、確認すべき点を確認していく
 必ずしも、初期段階でダンプファイルを解析する必要はない
 診断用のダンプが出力されたからといって、必ずしも重大な問題を示
すわけではないので慌てずに対処する
参考
 WDK and WinDbg downloads
 Use the Microsoft Symbol Server to obtain debug symbol files
Upcoming SlideShare
Loading in …5
×

[A15] SQL Server Trouble Shooting Tips from Support Team by Takashi Honma

1,008 views

Published on

Published in: Technology
  • Be the first to comment

[A15] SQL Server Trouble Shooting Tips from Support Team by Takashi Honma

  1. 1. A15:TROUBLE SHOOTING TIPS FROM SUPPORT TEAM Takashi Honma Support Escalation Engineer Microsoft SQL Server Support
  2. 2. A15:俺の SQL SERVER が、意味 不明なダンプを出力してるなん て許せない Takashi Honma Support Escalation Engineer Microsoft SQL Server Support
  3. 3. CONTENTS  Who’s Takashih?  セッションの目的  Dump file について  Access Violation  Assertion  Latch Timeout  Non-yielding Scheduler  Deadlocked Schedulers  Non-yielding Resource Monitor  Non-yielding IOCP Listener
  4. 4. WHO’S TAKASHIH?  経歴  1996年4月 東芝系子会社入社。Oracle 等をバックエンドとした開発を 担当  2001年5月 Microsoft 入社。SQL Server サポートに配属。今に至る  SQL Server サポートチーム  Engine に関するお問い合せは、TM 1/EE 1/SEE 2/SE 8で対応中  別にプレミアサポートでオンサイトを行うプレミアフィールドエンジニア というチームが存在
  5. 5. セッションの目的  現行サポートされるSQL Server では、多くの場面で診断用のダンプが 出力される  運用において出力されたダンプが、何の現象の診断のために出力され たかを知ることで、早急に対処が必要な状況なのか判断が行える  また、その状況を通して SQL Server の内部アーキテクチャを知る手掛か りともなる  ただし、すごい地味な発表になります
  6. 6. DUMP FILE について(1)  診断用のダンプは、SQL Server の Log フォルダに SQLDump0001.mdmp という形式のファイル名で出力される  このファイルを発見したら、まず ERRORLOG の該当時間帯の出力を 確認し、何の診断用ダンプなのか確認する
  7. 7. DUMP FILE について(2)
  8. 8. DUMP FILE について(3)  出力される主なダンプファイル  Access Violation  Assertion  Latch Timeout  Non-yielding Scheduler  Deadlocked Schedulers  Non-yielding Resource Monitor  Non-yielding IOCP Listener  DBCC CHECKDB
  9. 9. DUMP FILE について(3)  出力される主なダンプファイル  Access Violation  Assertion  Latch Timeout  Non-yielding Scheduler  Deadlocked Schedulers  Non-yielding Resource Monitor  Non-yielding IOCP Listener
  10. 10. ACCESS VIOLATION(1)
  11. 11. ACCESS VIOLATION(2)  Access Violation(AV) は、アクセス許可されていないメモリへの読み 取り、書き込みが行われた際に、OS側が発生させる例外  SQL Server は、全ての例外をハンドリングしているので、AVが発生 しても、基本的にプロセスが落ちることはない  ただし、3rd Party 製のモジュールでの例外はハンドルできないので意図 的に終了する  例外エラーは c0000005 なので、この番号が含まれていれば AV とし て判断できる
  12. 12. ACCESS VIOLATION(3)  想定される原因  データベース破損  SQL Server の不具合  SQL Server のプロセス空間内でのメモリ破損  対応  データベースの整合性確認  SQL Server のサービスパックレベルの確認  ハードウェアのチェック
  13. 13. ASSERTION(1)
  14. 14. ASSERTION(2)  Assertion は、SQL Server がコード上で条件がTrueであることを確認 している処理。条件が False であった場合、ダンプを出力する。  OS側がトリガするAVなどの例外とは異なり、SQL Server が行っている論 理チェック  SQL Server のコード上に多数埋め込まれている
  15. 15. ASSERTION(3)  想定される原因  データベース破損  SQL Server の不具合  SQL Server のプロセス空間内でのメモリ破損  対応  データベースの整合性確認  公開情報の確認  ハードウェアのチェック
  16. 16. LATCH TIMEOUT(1)
  17. 17. LATCH TIMEOUT(2)  Latch は SQL Server が内部で使用する排他オブジェクト  Lock と異なりユーザが制御できない  通常300秒でTimeoutする  必ずダンプを出力するのではなくラッチの種類等によってダンプの出 力を制御している
  18. 18. LATCH TIMEOUT(3)  想定される原因  パフォーマンス問題  MSSQLSERVER_846  MSSQLSERVER_847  SQL Server の不具合  対応  ボトルネックの調査  SQL Server の設定確認  公開情報の確認
  19. 19. NON-YIELDING SCHEDULER(1)
  20. 20. NON-YIELDING SCHEDULER(2)  まずは、SCHEDULERについて理解することが必要
  21. 21. SCHEDULER  SQL Server が CPU 毎に1つ作成するオブジェクトで、スレッドを管理  この Scheduler を獲得したスレッドのみが処理を行える  Worker Threads が各 Scheduler に割り当てられる  クライアントからの要求は、各 Scheduler に割り振られる  sys.dm_os_schedulers 等で情報を確認可能
  22. 22. NON-YIELDING SCHEDULER(3)  前述のSchedulerを1つの処理が専有した場合、同じ Scheduler を共 有する他の処理が動作できない  この状態が特定のスケジューラーで1分以上継続している状態を検出し た際に発生するのがNon-Yielding Scheduler  エラー 17883 で定義されている  既定では、SQL Server 起動後最初のNon-Yielding Schedulerのみダン プを出力する  単発で発生した分には大きな問題を示すものではない
  23. 23. NON-YIELDING SCHEDULER(4)  想定される原因  パフォーマンス問題(特にディスク)  SQL Server の不具合  対応  ボトルネック調査  公開情報の確認
  24. 24. DEADLOCKED SCHEDULERS(1)
  25. 25. DEADLOCKED SCHEDULERS(2)  Non-Yielding Scheduler と同様に Scheduler の状態を示す  エラー17884で定義  すべての Scheduler で、スレッドが使い果たされて、スレッド待ちが 発生し、かつ処理が進んでいない状態  Non-Yielding Scheduler と同様に既定では最初の一回だけダンプが出 力される
  26. 26. DEADLOCKED SCHEDULERS(3)  想定される原因  パフォーマンス問題(ブロッキング)  一般的には、重度のブロッキングによって発生  SQL Server の不具合  対応  ブロッキングの調査  公開情報の確認
  27. 27. NON-YIELDING RESOURCE MONITOR(1)
  28. 28. NON-YIELDING RESOURCE MONITOR(2)  ResourceMonitor は、SQL Server のコンポーネントの1つで、メモリ プレッシャーの状況下で、メモリリソースの管理を行う  このコンポーネントが何らかの処理に専有された状況を示す  既定では SQL Server 起動後の最初の一回のみダンプが出力される
  29. 29. NON-YIELDING RESOURCE MONITOR(3)  想定される原因  パフォーマンス問題(メモリ不足)  一般的には、メモリ不足の状況下でメモリ操作に時間が掛かる状況で、その他 のメモリ不足を示すエラーと共に出力される  SQL Serverの不具合  対応  SQL Server の設定確認  メモリ使用状況の確認  公開情報の確認
  30. 30. NON-YIELDING IOCP LISTENER(1)
  31. 31. NON-YIELDING IOCP LISTENER(2)  IOCP LISTENER と呼ばれるスレッドが、パケットのI/Oを管理している  このスレッドが停止すると、SQL Server との通信が停止する  この状況を検出した場合に発生するのが、この Non-Yielding IOCP Listener  既定では SQL Server 起動後の最初の一回のみダンプが出力される
  32. 32. NON-YIELDING IOCP LISTENER(3)  想定される原因  外的要因  パフォーマンス問題(メモリ不足)  SQL Serverの不具合  対応  SQL Server の設定確認  メモリ使用状況の確認  公開情報の確認
  33. 33. まとめ  出力されたダンプの種類に応じて、確認すべき点を確認していく  必ずしも、初期段階でダンプファイルを解析する必要はない  診断用のダンプが出力されたからといって、必ずしも重大な問題を示 すわけではないので慌てずに対処する
  34. 34. 参考  WDK and WinDbg downloads  Use the Microsoft Symbol Server to obtain debug symbol files

×