[上級者向け] Windows アプリケーションの障害切り分け方法

Pocket

開発したり、運用していると、原因不明の障害に出くわすことがある。アプリのログやWindowsイベントログを確認しても原因特定できず、アプリを再インストールしても、正常に動作しない。そんな場合の大まかな切り分けをメモする。

(0) 大まかな流れ

  1. アプリケーションのログやWindowsイベントログから原因を探す。
  2. それでも原因が見つからない場合、可能ならアプリケーションを再インストールする。
  3. それでも原因が見つからない場合、常駐しているサービス・アプリケーションを停止する。
  4. それでも原因が見つからない場合、CPU・メモリ・ディスクIOに負荷をかける。
  5. それでも原因が見つからない場合、セーフモードにする。
  6. いずれでも原因が見つからない場合の対処

(1) 各ログから原因を探す

アプリケーションで出たエラーログやWindowsのイベントログを検索すると、大抵の問題は解決するので、まずは検索。

(2) アプリケーションを再インストールする

時々使用するようなツールで、アンインストールしても、問題ないような場合は、設定をバックアップの上、再インストールし、動作を確認する。

(3) 常駐サービス・アプリケーションを停止する

よくあるのが、常駐しているウィルスソフトがファイルスキャンのために、勝手にロックしていて、書き込みできなかったパターン。
そういったことを切り分けるため、常駐しているサービスやアプリケーションをすべて停止させ、必要最小限のWindowsサービスのみが動作する状態にして、動作を確認する。停止手順は以下のとおり。

    1. 管理者権限でコマンドプロンプトを起動する。
    2. msconfig と入力し、Enter。
    3. 「システム構成」ダイアログが起動するので、「サービス」タブを選択。

msconfig

  1. 「Microsoft のサービスをすべて隠す」をチェックする。
  2. 「すべて無効」をクリックする。
  3. 「スタートアップ」タブをクリックを選択し、「すべて無効にする」ボタンをクリックする。
  4. Windows を再起動する。
  5. Windows へログインし、アプリケーションの動作を確認する。
  6. 正常に動作した場合は、停止したサービス、またはアプリケーションのどれかが原因。

(4) CPU・メモリ・ディスクIOに負荷をかける

アプリが正常に動作したり、しなかったりと挙動が変わる場合は、ソースコードの問題でなく、運用マシンへの一時的な負荷による問題の可能性が高い。特に仮想マシンを使用していると、リソースを共有していることもあり、発生しやすい。

(5) セーフモードにする

Windowsをセーフモードで起動し、動作を確認する。正常に動作した場合は、デバイスのドライバが原因。

セーフモードの実行方法は以下のMicrosoftのサイトのとおり。

(6) いずれでも原因が見つからない場合の対処

  • ハードディスク上でファイルが壊れている可能性あり、ディスクチェックしてみる。
  • Windows の再インストール。
  • ハードウェアの何かが壊れている可能性あり、別PCにし、動作させてみる。

以上

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です