[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] * 目次 [#cd7e9123] #contents *概要 [#oc683cf8] 以下は障害発生までに至る因果関係の事例になります。 -「現象」と「原因」はプラットフォームの内部状態を理解しなければ紐付けできません。 -逆に言えばプラットフォームの内部動作を理解しておけば、この紐付けも容易になります。 これを行うには +プラットフォームに対する知識 +状態確認・分析方法に関する知識 +分析結果から原因を推測するスキル が必要になります。 *xxx例外の発生 [#wff64f43] **現象 [#rcbd7e66] +例外でクラッシュ +xxx例外 **分析手順 [#te05ed3d] +ログ確認~ WERなどから例外情報を確認する。 +ダンプ+ダンプ解析 --本番環境でのみ再現する場合はクラッシュダンプ取得+解析 --例外情報と、例外を発生させているスレッドのスタックを確認する。 +プログラムのプロファイル~ 開発環境で再現できる場合、プログラムをデバッグ **原因 [#j699ff40] プログラムのバグによる未処理例外 **解決策 [#lc3f2b19] -問題のPGを修正 -ミドルウェアへのパッチ適用等 *OutOfMemory例外の発生 [#xd629ff0] **現象 [#ic6f4c07] +性能が出ない → 例外でクラッシュ +メモリ使用量大 → GC、ページング → オーバヘッド大 → OutOfMemory例外 **分析手順 [#rd01a3b7] +ログ確認~ WERなどから例外情報を確認する。 +パフォーマンスカウンタ~ ページング、メモリリークの確認、プロセスの特定など +ダンプ+ダンプ解析 --本番環境でのみ再現する場合はダンプ取得+解析 --仮想アドレス空間の確保状況を確認する。 +プログラムのプロファイル --開発環境で再現できる場合、プロファイルを実行 --ヒープの使用状況を確認する。 **原因 [#jfbc2e0c] プログラムのバグによるメモリリーク **解決策 [#g3b65dc3] -問題のPGを修正 -ミドルウェアへのパッチ適用等 *CPU使用率大 [#x80f91c9] **現象 [#j8539638] +性能が出ない +CPU使用率大 **分析手順 [#wf0d50ae] +パフォーマンスカウンタ~ CPUリソースを消費しているプロセスの特定など +ダンプ+ダンプ解析~ 本番環境でのみ再現する場合はハングダンプ取得+解析~ (ハングダンプを取得可能なほどCPUを消費する場合に限り)~ ハングしていると思われるスレッドのスタックを確認する。 +プログラムのプロファイル~ 開発環境で再現できる場合、プロファイラを実行して問題個所を特定 **原因 [#t92ff23b] プログラムのバグ・問題によるCPUリソース大量消費(種々の効率の悪い処理に起因する) **解決策 [#h1614b77] -問題のPGを修正 -ミドルウェアへのパッチ適用等 *ディスクIOネック [#pea46f2d] **現象 [#jbcf0d2d] +性能が出ない +ディスクIOネック **分析手順 [#n5bd8103] +パフォーマンスカウンタ~ ディスク・リソースを消費しているプロセスの特定など +プログラムのプロファイル~ 開発環境で再現できる場合、プロファイラを実行して問題個所を特定 **原因 [#p327c456] プログラムの問題によるディスク・リソース大量消費 **解決策 [#pf3cc39d] -問題のPGを修正 -ミドルウェアへのパッチ適用等 *SQLの完了が遅い [#c5b45e9f] **現象 [#f2497d11] +性能が出ない +SQLの完了が遅い **分析手順 [#p57f38d9] +パフォーマンスカウンタ --ハードウェア・リソース消費の確認 --SQL Serverの状態の確認 +SQLログ~ SQL Serverのイベントの確認 +SQLトレース~ DBMSインスタンスの処理しているクエリの確認 +実行プランの確認~ 問題のSQLの実行プラインに問題が無いか確認 **原因 [#z53beded] プログラムの問題によるディスク・リソース大量消費 **解決策 [#o60cc4f9] -DBサーバのリソース不足 --ハードウェア・リソースの追加 -DB設定の問題によるリソース大量消費 --バッファ・キャッシュの拡張、 --DB拡張、ログ記録、制約、トリガ等の一時的無効化 -DMLの問題によるリソース大量消費 --非効率なデータアクセスを修正する。 --リソースを大量消費しないように修正する。 --インデックスを使用するように記述(ルールベース --インデックスを使用するように統計情報を更新(コストベース -DDLの問題によるリソース大量消費 --インデックスを張る。 --非正規化を実施。