Windows自動更新時のCPU 100%問題の解決法
3月でサラリーマンを辞め、個人事業主としての生計を営み始めました。
とはいえ、当面は某大手企業への客先常駐勤務での請け負いです。
サラリーマン時代には、Gパンで自転車通勤していたのに、個人になったとたん、スーツを着て通勤電車に揺られ、首からIDカードをぶら下げているという、絵に描いたような脱サラの鑑です (チガウダロ)
環境はC#で、Excelデザインシートとデータベース移行用XMLの相互コンバーターの開発。
プログラマとして入り込みましたが、C#に触るのも初めてで出勤前に@ITを読破しました。「なんちゃってオブジェクト思考」しか経験ないくせに(爆笑)
同僚は一人もおらず、前任が作りかけたプログラムの後を引き継いで完成させる仕事。まあ、1ヶ月経過して、卒なくこなせているようです・・・・
?
しかし、あてがわれたマシンの調子がすごぶる悪い。
遭遇したことがある方もいると思いますが、Windowsの自動更新によってCPUが100%状態になるという、アレです。以下のような症状に遭遇した経験があったら、あたりです。
- 今までなんともなかったのに、ある日突然、マウスやキーボードの反応が鈍くなった。
- Ctrl+Alt+Deleteでタスクマネージャを(苦労して)開いてみたら、CPUが100%使いっぱなし状態だった。
- タスクマネージャの「プロセス」タブを(苦労して)開いてみたら、SYSTEMによるsvchost.exeが100%だった。
- 我慢して放置していたら、数十分後にCPUが開放され、何ごともなかったように平穏になった。
- ところがそれ以後、1日に何回か、CPU 100%状態が数分は発生するようになった。
- それでも我慢して使っていたら、1ヶ月後にまた、CPU 100%状態が数十分間続いた。
- 4に続く(笑)
この「毎日少し」と「月に1回」というのが味噌で、ようするにWindows自動更新の定期チェックと、Microsoftの月例更新に当たるわけです。
いろいろ調べましたが、私の場合、以下のバッチ処理でこの問題は解決されました。
自動更新のサービスを停止させた状態で、自動更新のサービスの実行プロセスを、他のサービスから切り離す、という処理です。
net stop wuauserv sc config wuauserv type=own net start wuauserv
SCとtypeの説明はここにあります。
バッチで変更する前に、念のためtypeの値を確認するには、sc qc wuauserv を実行します。
>sc qc wuauserv [SC] GetServiceConfig SUCCESS SERVICE_NAME: wuauserv TYPE : 20 WIN32_SHARE_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\WINDOWS\system32\svchost.exe -k netsvcs LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Automatic Updates DEPENDENCIES : SERVICE_START_NAME : LocalSystem
つまり、デフォルトに戻すには sc config wuauserv type=share なわけですね。
覚書として、ここに記しておきます。
