web-dev-qa-db-ja.com

なぜWindows Updateのチェックがとても遅いのですか?

自動アップデートがオフになっているWindows 7 PCがあります。私は月に1回くらいバッチで更新をします。しかし、毎回「アップデートの確認」には15〜30分かかります。更新の確認が非常に遅い理由がわかりません。私は背景で何が起こっているのか疑問に思う必要があります。ハッシュの計算ですか?自動更新が有効になっている私のPCは、起動するたびに同じ運命をたどりますか(私が気付いていなかったことだけ)。

122
some user

更新のチェック部分は非常に遅いので、

  • Windows 7は コンポーネントベースのサービス を使用しています。つまり、Windows Updateではファイルとコンポーネントの依存関係/相互依存関係を判断し、並行して保守することが非常に困難です。古いファイル/コンポーネントのサイドバージョン、それでも個々のアップデート/コンポーネントをアンインストールすることを可能にしますが、他のアップデート/コンポーネントを壊すことなく、その間ずっとsupercedenceを考慮に入れて、神は他に何を知っています。これらすべてを行うコードは、非常に複雑なものでなければなりません。

  • Windows 7 64ビット版では、各更新プログラムの32ビット版と64ビット版の両方を管理する必要があります。

  • Windowsは、各アップデートの GDRとLDR の両方のバージョンを維持する必要があります。つまり、Windows 7 64ビットでは32ビットGDR、32ビットLDRが得られます。 、64ビットGDR、更新ごとに64ビットLDR。

  • Windows Updateの背後にあるコードは、おそらくその概念上の複雑さのために非常に非効率的です。ここ数年の私の観察は、リリースされたアップデートの総数が増加するにつれて、アップデートチェック時間がほぼ指数関数的に増加したことです。私にとっては、これはある種の再帰的アルゴリズムが採用されていることを示しています。おそらく、超越性の判断や依存関係の解決などです。

私たちにとって残念なことに、マイクロソフトはウィンドウズの内部構造について話すのが好きではないので、私たちは自分自身でそれを理解するか憶測する必要があります。

102
misha256

問題のいくつかの側面が既存の回答で扱われました。私は、すでに言われたことを繰り返さずに、一般的な方法で原因をリストすることによってそれらを結び付けることを試みます:

  1. Microsoft Windows Updateのメカニズムは非常に洗練されており、残念ながらこれもまた複雑です。
  2. WUは、計り知れない数のハードウェアとソフトウェアの組み合わせをサポートする必要があります。
  3. WUは正しい順序でアップデートを適用する必要があります
  4. Windows 7は古いシステムです、そして、SP2は遅過ぎて、おそらく決して届かないであろう、それは非常に多くの更新をする
  5. ここ数年、マイクロソフトは多数のセキュリティ問題を修正することを強く求められていました。その結果、非常に多くの多忙な修正が行われ、次に修正の修正などが第n世代にもたらされました
  6. マイクロソフトは更新メカニズムを十分に最適化することができませんでした。それは一般に指数関数的アルゴリズムで、結果としてかなり遅いブルートフォースアルゴリズムになります。
  7. マイクロソフトのWUサーバーは時々過負荷になります。

これらの点をさらに詳しく見てみましょう。

Windows Updateの複雑さ

更新がリリースされた後、それは時間の経過と共に3つの追加の異なるフェーズに入ることができます:改訂、優先、および期限切れ。

Update Revisions :以前にリリースされたアップデートに変更が加えられた場合、それはUpdate Revisionと呼ばれ、ダウンロードの一部が変更されます。これは完全ではなく部分的な更新の置き換えです。

置き換えられた更新:これは以前のリリース、または複数のリリースを完全に置き換えるものです。マイクロソフトは複数のリリースを単一のパッケージにラップし、そのパッケージがカプセル化された更新プログラムを置き換えることがあります。

期限切れの更新:これらは有効な更新の一覧から削除された更新です。このようなアップデートは適用されなくなり、インストールで検出されなくなります。ほとんどの場合、更新は置き換えられる置き換えによって置き換えられると期限切れになります。

更新には依存関係のメカニズムもあります。つまり、更新によっては他の更新を最初に適用する必要がある場合があります。

期限切れの更新はWUのパフォーマンスに問題があります。残念ながら、それらはコンピュータから削除されていないため、まだ計算に参加しており、その多くがあります。ディスククリーンアップを使用して 古いWindowsアップデートを削除します (WUも非常に壊れやすいため、最初にシステムドライブのバックアップディスクイメージを作成します)を使用すると、ある程度の改善が見込まれます。

WU計算

膨大な数の組み合わせの可能性があるため、Microsoftはすべての更新をWUサーバー上で巨大なツリーの形式で保持しています。どの更新プログラムを適用する必要があるかの判断は、クライアントにインストールされているハードウェアとソフトウェア、および既にインストールされているすべての更新プログラムを考慮するツリープルーニングアルゴリズムによって行われます。剪定時にはすべて正常に適用されます。

このアルゴリズムは成功を保証するものではありません。つまり、WUはOSを破壊したり、起動不可能にしたりすることさえも可能です。これは完全に理解できます。例えば、リビジョンA2を持つアップデートA1を取得します。Aに依存するアップデートBはA1とA2の間でリリースされました。間違った決定が致命的になる可能性があるとき今すぐインストールの順序がA1-B-A2またはA1-A2-Bであるべきかどうか図に行きます。

過負荷のWUサーバー

ウィキペディアでは と言っていますWindows Update統計情報

2008年現在、Windows Updateには約5億のクライアントがあり、1日に約3億5千万のユニークスキャンが処理され、平均150万のクライアントコンピュータへの同時接続が維持されていました。マイクロソフトが通常新しいソフトウェア更新プログラムをリリースする日のパッチ火曜日に、送信トラフィックは毎秒500ギガビットを超える可能性があります。

これらの数はおそらく今では2倍になっており、なぜWUサーバーに到達できないのかを説明しています。 WUオプションを使用して[更新を確認して選択します]を選択していますが、更新を確認するのに待機する時間よりも長い時間がかかるため、延期が必要です。

Windows 7の長い歴史

Windows 7は、2009年7月22日にリリースされました。約17か月後、Service Pack 1(SP1)は2011年2月22日にリリースされました。これは約4.5年前のことです。

Service Packの良い点は、それをインストールすると更新履歴全体が消去されるため、事実上WUがゼロから始まり、Windowsの新規インストールの後とまったく同じです。考慮すべき更新が少ないので、これはもちろんすべての計算を非常にスピードアップします。

SP1以降、膨大な数の既存の更新プログラムがWU計算が今日非常に遅い理由を説明します。 Microsoftの場合、問題は最新のWindows 8.1またはWindows 10にアップグレードすることで「簡単に」解決できるため、WUには考慮すべき更新プログラムの数が少なくなります。

結論

マイクロソフトは依然としてWindows 7に多数の更新を適用し続けているので、WUは時間が経過しても減速し続けるだけです。

1つの可能な最適化は 古いWindowsのアップデートを削除する です。もう1つの方法は、WUオプションを使用して[更新を確認して選択してください]を選択し、早朝または深夜に更新を確認することです。

ほとんどのアップデートはWindows 8および10にも適用されるため、MicrosoftのWUサーバーへの負担はWindows 10が間もなくリリースされたときにのみ増大します。マイクロソフトはまた、最近のオペレーティングシステムにサービスを提供することを重視して、独自のポリシーに従ってWUサーバーの帯域幅を分割しているようです。 Windows 10用の非常に高速なアップデート.

WUが遅すぎる場合、唯一の本当の解決策は新しいバージョンのWindowsにアップグレードすることです。

良いニュース:Windows 7(および8.1)用のSP2がリリースされました

マイクロソフトは、Windows 7および8.1用の実際のSP2を公開しました。このアップデートは何らかの理由でWindows Updateから入手できないため、手動でダウンロードしてインストールする必要があります。

記事の中でそれを取得する方法について読んでください。
MicrosoftはWindows 7および8.1のアップデートを見直し - しかしそれをサービスパックとは呼ばない

60
harrymc

この問題は、途中でさまざまな修正を加えて何年にもわたってきてきたので、2016年1月5日現在、この問題に対する私の最新のガイドをここに示します。

下記の編集セクションを確認してください。2016年5月の時点でクリーンインストールした後にWindows 7 SP1を完全にアップデートするためのもっと速い方法があります。

これは私がSP1でW7を再インストールするか、またはアップデートをチェックすることで立ち往生するWindowsアップデートに関する問題を抱えているとき私がすることです。

Service Pack 1がインストールされていない場合は、このガイドに従う前にインストールしてください。

KB-3138612 をダウンロードして、後で見つけられる場所に保存します。

SURツールをダウンロードする 同じ場所に保存する

Windowsをロードする前にPCを再起動し、インターネットから切断してください。起動ウィンドウは毎回バックグラウンドで更新プログラムをチェックし、更新プログラムのチェックは再びハングし始め、ダウンロードされたパッケージのインストールは完了しないようになります。チェックするので、Windowsがロードされる前にインターネットから切断することはこれを防ぎます。

起動したらKB-3138612をインストールします。再起動が必要な場合は再起動し、インターネットに接続しないでください。

SUR Toolパッケージをインストールしてください。これは大きなパッケージで、Windows Updateストアのクリーンアップと修復と共に多数のアップデートをインストールします。また、あとでインストールする必要があるWindows更新プログラムの数も削減されます。

SURパッケージの再起動後、インターネットに接続して手動でWindows Updateを実行してください。これらの修正の後でも、コントロールパネルから手動で起動した場合、私はいくつかのW7 PCがアップデートのチェックを完了するのに最大1時間かかるのを見ました。

他にもWindowsアップデートの問題があり、上記の2つのアップデートがインストールされている場合は、 このMicrosoft Windows Update修正ツールをダウンロードする (右クリックして「名前を付けて保存」)更新します。再起動して、コントロールパネルからWindowsの更新プログラムをもう一度試します。このツールは、少なくとも私の経験では、他のMicrosoft fixitツールが失敗したときの問題を解決します。

更新: Microsoftは にWindows 7 SP1用の巨大な更新プログラムのロールアップをリリースしました 、これはサービスパックに似ていますが、彼らはそれを呼んでいません。これにより、クリーンインストール後のWindows 7の更新がはるかに速くなり、Windowsの更新に関する問題がなくなり、再起動が多くなります。この更新プログラムのロールアップにより、システムは2016年4月の火曜日にパッチを適用するようになります。

これはWindows Updateを通じてリリースされていません。入手するにはInternet Explorerを使用し、IEを開いてこのアドレスにアクセスする必要があります。

http://catalog.update.Microsoft.com/v7/site/home.aspx

検索ボックス3125574を入力し、エンターキーを押してください。

enter image description here

これで、このロールアップのすべてのバージョンが表示されます。必要なバージョンを選択して、後で見つけられる場所にダウンロードします。

enter image description here

また、Windows Updateカタログページを使用して 最初にこの更新プログラムをダウンロードしてインストールします。3020369 、これはロールアップの前提条件です。その後3125574をインストールします。 。

21
Moab

スキャン中に ETW/WPR/WPAを使用してCPU使用率 を確認すると、CPU使用率はwuaueng.dll!CUpdatesToPruneList::AddSupersedenceInfoIfNeededから呼び出されるwuaueng.dll!CAgentUpdateManager::FindUpdatesから来ることがわかります。 AddSupersedenceInfoIfNeededメソッドが最も遅いものです。これは名前が示すことを行い、提供された/インストールされたWindows 7の更新プログラムが依然として必要であるか、または置き換えられている(古い/新しいものに置き換えられた)かどうかを調べます。これはとても遅いです。

2016年6月 からの最後のWindows Updateクライアント更新で、これは Windows 7 July 2016更新プログラムのロールアップの一部である の場合、更新検索は再び高速になります。

  1. ダウンロード:

新しい更新を検索するのに1分以上かかりません。更新プログラムKB3172605のセットアップを高速化するには、WindowsUpdateサービス(net stop wuauserv)を停止してください。

あなたがいくつかのMSUアップデートをインストールするとき、このWUサービスストップトリックはインストールをかなりスピードアップします:

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR /R "%~dp0" %%A IN (*Windows6.1-KB*.MSU) DO (
        CALL :SUB %%~nA        
    ECHO= Installing KB!KB_NUM!        
    >NUL net stop wuauserv
    WUSA "%%A" /quiet /norestart)
ECHO= == Press any key to close the Window ==
>NUL PAUSE

GOTO :EOF

:SUB

SET "KB_NUM=%*"
FOR /F "DELIMS=-" %%B IN ("%KB_NUM:*-KB=%") DO SET "KB_NUM=%%B"

Windows 10では、マイクロソフトは私の提案に従って問題を解決し、アップデートを累積的にしました。ここでは、現在のパッチレベルにあるために必要な更新は1つだけです。この遅いチェックはもう必要ありません。

9
magicandre1981

XP更新に関する過去の経験が何か兆候であれば、彼らは時折 指数時間アルゴリズムをそこに入れてみましょう 。いったんあなたが多くの更新をしたら...永遠にかかります。現在、Win 7のアップデートも同様の状況にあります。時間がかかるが、この最近の低迷についての公式な説明はまだない。興味深いことに、これは(古いバージョンに対して)新しいものが出たときに「起こる」ことです。皮肉なことに私は助けることができないが、誰かが意図的にそれが起こることを望んでいるかもしれないと想像することができる、[古い] Windowsの線に沿って?あなたは新しいバージョンが必要です。それとも、それは単にホリデーシーズンを始めるためのMSの方法です。

ある種のWUの低速化のための修正プログラムがありますが、これは自動的には提供されません(つまり更新自体を介して): https://support.Microsoft.com/ja -us/kb/3102810 残念ながら、私の場合はそれほど大きな違いはありませんでした。32ビットと64ビットの2台のコンピュータで試してみました。また、10月から出回っているので、おそらく最新号ではないでしょう[s]。

3
Fizz

今日、Windowsを実行しているPCは約10億台あります。各PCには、ハードウェア、アクセサリ、OSのバージョン、言語、IE、デバイスドライバのバージョン、さまざまなパッチレベルのマイクロソフトソフトウェア、セキュリティ更新プログラムなどの組み合わせがいくつかあります。個々のPC各更新には、依存関係や "優先"構造などのプロパティがあります。

スキャンの最初のステップ(最初の実行)は、OSのバージョン、SP、言語、PC製造元を特定して、そのPCの可能性のあるアップデートのツリーを整理することです。最初のスキャンに基づいて、可能性のあるアップデートIDのセットがデバイスに送信され、ローカルクライアントはどのアップデートがインストールされたか、置き換えられたかなどを計算し、そのリストをサーバに送信します。サーバは、(適切なUI言語で)UIに表示される説明などを用いて、クライアントの更新要求に応答する。

1日に1回、自動更新クライアントによってチェック更新がバックグラウンドで行われ、インストールされた更新のローカルキャッシュが更新されるため、以降のスキャンはデルタで高速になります。これらはPCの%windir%\ softwaredistributionフォルダに格納されています。

以前にダウンロードされたアップデートについても同様のプロセスが実行されます。サービスはパッケージを再ダウンロードしません。

この記事は、検索中に実際に何が起こっているのかを少なくとも理解するのに役立ちます。美しく書かれています。だから私はそのようにそれを掲載しています。元の投稿は にあります

Windowsの更新設定をCheck for updates but let me choose whether to download and install themに変更したときに、インストールの更新を確認するのにかかる時間が著しく変わりました

私の意見であなたの最善の策は、単にWindowsのアップデートを有効にして、アップデートをダウンロードするが自動的にはインストールしないというオプションに切り替えることです。そうすれば、チェックやバックグラウンドファイルのダウンロードを待つことなく、インストールしたいものを入手できます。

では、なぜそれが遅いのかをお答えしましょう。私はそれが単にウィンドウズの更新がユーザーへの顕著な影響の減少を念頭に置いて構築されたという事実に帰着すると思う。アップデートの確認とダウンロードにはBITSサービス(バックグラウンドインテリジェント転送サービス)を使用します。

繰り返しますが、このサービスの焦点は、ユーザーに支障をきたさない方法で作業することです。マイクロソフトは、毎月更新サービスをオン/オフにすることをクライアントに意図していなかったため、意図的に速度を遅くしています。

あなたが調べるかもしれないことはあなた自身のWSUSサーバーセットアップを得ることです。そうすれば、エンタープライズ管理者が行うのとほぼ同じ方法で更新を拒否できます。また、選択した更新を自分が所有するすべてのWindowsデバイスに適用または拒否できます。選択的に更新するという雑用をするのです。

1
Geruta

Windows Updateや他のいくつかのWindowsシステムコンポーネントが Microsoft JET Blue データベースエンジンを使用しているため、処理速度が遅くなります。 。

他の人が言ったように、Windows Updateコード自体にもある程度の再帰があるように見え、更新の数が増えるにつれてパフォーマンスが低下します。

1
Jure Sah

別のデータポイントを追加するだけです。私は最近Vista PCを立ち上げる必要があります。 VistaをSP1からSP2に手動でアップグレードしましたが、アップデートの確認に時間がかかります。 24時間以上何も起こらなかった。

私は次のアップデートをインストールすることを含む解決策を見つけたいくつかのグーグルをしました:

http://www.catalog.update.Microsoft.com/Search.aspx?q=KB3205638%20Vistahttp://www.catalog.update.Microsoft.com/Search.aspx?q=KB4012583%20Vistahttp://www.catalog.update .Microsoft.com/Search.aspx?q = KB4015195%20%http://www.catalog.update.Microsoft.com/Search.aspx? q = KB4015380%20Vista

手動でアップデートをダウンロードしてインストールした後。私は10分間アップデートチェックを実行しました、そしてそれは200のアップデートを見つけました。これはVista用ですが、Windows 7にも似たようなものがあると私は思います。

0
some user