Windows の497日問題 その後
かなり昔に盛り上がっていた話題ですが、最近また話題に上がっていたので、改めてまとめてみます。結論だけ先に書いてしまうと、MS12-032(KB2688338)のセキュリティ更新プログラムを適用している Windows 7 及び Windows Server 2008 R2 については影響を受けません。
Windows の497日問題とは
ここで取り上げている Windows の497日問題は、Windows 7、Windows Vista、Windows Server 2008 R2、Windows Server 2008 で連続稼働時間が 497 日(場合によっては 248.5 日)を超えると、TCP ソケットの TIME_WAIT 状態が開放されずポートが枯渇する(場合がある)というものです。詳細は、KB2553549 にまとめられています。
システム起動から 497 日経過すると、TIME_WAIT 状態であるすべての TCP/IP ポートが閉じられません。そのため、TCP/IP ポートが使い尽くされ、新しい TCP/IP セッションが作成されない場合があります。
248.5 日経過すると、TCP Chimney オフロードが失敗します。そのため、オフロード接続が使用されている場合、248.5 日経過するとシステムが応答を停止します。
この事象が発生すると新規の TCP 接続が行えない為、ネットワークを使用するサービスはほぼ利用できなくなります。実際に、Active Directory Domain Service (AD DS)のドメインコントローラー(DC)へ接続できなくなり、SQL Server がクラスタサービスごと落ちるといった事例もあります。
解決方法
直接的な解決方法は、KB2553549 で公開されている修正プログラムを適用する事です。この修正プログラムは「重要な更新プログラム」には分類されておらず Windows Update では配信されていませんので、Microsoft のサイトからダウンロードして個別に適用する必要があります。
“Windows Vista” と書かれているものが Vista 及び 2008 用、”Windows 7/Windows Server 2008 R2 SP1″ と書かれているものが 7 及び 2008 R2 用です。Windows 2008 の表記がありませんが、”Vista” と書かれているものの中に 2008 用の修正プログラムが含まれています。
この修正プログラムは事象を回避する必要があるコンピューターにのみ適用することが推奨されています。(全てのコンピューターに、無条件に適用する事は推奨されていません。)
この修正プログラムは、ここで説明する問題が発生しているシステムにのみ適用してください。この修正プログラムは、今後さらにテストを行う場合があります。したがって、この問題で深刻な影響を受けていない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことを推奨します。
- 修正プログラムは特定の現象のみに対応しているため、他の現象を引き起こす場合があります。
- 誤った修正プログラムを適用した場合、システムに影響が出る場合があります。
- どの修正プログラムが正しいか不確かな場合は適用しないでください。
- ほとんどの修正プログラムは次回のサービス パックとして提供されますので、その際に Microsoft Update を利用することでより安全に適用できます。
毎月 Windows Update 等でセキュリティ更新プログラムを適用し再起動を行っているシステムについては、497日(又は248.5日)以上システムが連続で稼働する事はありませんので、修正プログラムを適用する必要はありません。システムを連続稼働させる必要があり、497日以上連続で再起動を行わないシステムについては、(原則としては)修正プログラムを適用する必要があります。
Windows Vista / Windows Server 2008 の場合
将来リリースされるサービスパックには KB2553549 の修正が含まれると思われます。現時点で事象を回避する必要があり、定期的な再起動など運用面での回避が難しい場合には KB2553549 の修正プログラムを適用する必要があります。
Windows 7 /Windows Server 2008 R2 の場合
Windows 7 や Windows Server 2008 R2 の場合、KB2553549 の修正プログラムを適用する以外にも対応方法があります。それは、セキュリティ情報 MS12-032 の修正プログラム(KB2688338)を適用する事です。
KB2688338 には KB2553549 の修正内容が含まれている為、Windows Update 経由で MS12-032 の修正プログラム(KB2688338)を適用済みの場合は、既にこの問題は解消している事になります。実際に KB2688338 が適用済みの環境へ KB2553549 を適用しようとすると、「この更新プログラムはお使いのコンピュータには適用できません」と表示されます。なお、Windows Vista および Windows Server 2008 の MS12-032 修正プログラムにはこの問題の修正が含まれていない為、Vista や 2008 を使用している場合は上記の通り、別途 KB2553549 を適用する必要があります。
補足
Windows Vista / 2008 の MS12-032 に497日問題の修正が含まれていない理由
KB2553549 の修正プログラムは、複数のリリースが用意されています。
- Windows Vista / 2008 用 : LDR
- Windows 7 / 2008 R2 用 : LDR 及び GDR
LDR と GDR については、Windows SDK サポートチームのブログで以下の様に解説されています。
Limited Distribution Release (LDR)
以前は、Quick Fix Engineering、略して QFE と呼ばれていました。ある特定の問題を解決するために修正が行われ、その問題が解決されていることをテストにより確認した上で公開された修正プログラムです。局所的なテストとなることが多いので、修正がほかの機能に影響している可能性があります。General Distribution Release (GDR)
広範囲のお客様に提供するために、さらに多くのプロセスを経て、追加テストなども行った上でリリースされる修正プログラムを指します。
大きな違いとしては、LDR は Windows Update での配布や自動更新の対象になりません。また、LDR の修正内容をベースに他の更新プログラムが作成される事も(原則としては)ありません。それに対して、GDR では修正内容が後続の(後からリリースされる、同一のバイナリを更新する)修正プログラムへ反映されます。この為、GDR が用意されている Windows 7 /2008 R2 では MS12-032 の修正プログラムに497日問題の修正が含まれていますが、Windows 7 / Vista では修正が含まれていない状態になります。
TCP/IP Chimney Offload が有効となる条件
TCP/IP Chimney Offload が有効になっている環境では、248.5日で問題が発生する可能性があります。TCP/IP Chimney Offload が有効かどうかは、netsh コマンドで確認できます。
C:\Users\Administrator> netsh interface tcp show global アクティブ状態を照会しています... TCP グローバル パラメーター ---------------------------------------------- Receive-Side Scaling 状態 : enabled Chimney オフロード状態 : automatic NetDMA 状態 : enabled Direct Cache Acess (DCA) : disabled 受信ウィンドウ自動チューニング レベル : normal アドオン輻輳制御プロバイダー : none ECN 機能 : disabled RFC 1323 タイムスタンプ : disabled ** 上の autotuninglevel 設定は、少なくとも 1 つのプロファイルのローカル/ポリシー構成を上書きするウィンドウ スケーリング ヒューリスティックの結果です。
Windows 7 や Windows Server 2008 R2 は既定では “automatic” になっています。”automatic” に設定されていると以下の条件を全て満たした場合にのみ TCP/IP Chimney Offload が有効となります。
- NIC が Chimney offload をサポートしている
- 10Gbps Ether を使用している
- Round Trip Time(RTT)が 20ms 未満
- 130KB 以上のデータ通信が行われている
オフィス環境ではあまり条件を満たさないと思いますが、データセンターでは 10G NIC がかなり普及してきているので注意が必要です。
※2013/04/13 データセンターを「DC」と表記していた箇所について、「データセンター」へ修正しました。
普通データセンターをDCと略すか…?
inshin
2013/04/12 13:03
ご意見ありがとうございます。確かに、初めの方で「ドメインコントローラー(DC)」と書いておきながら、最後に何の注釈もなくデータセンターの意味で「DC」と書くのは分かりにくいですね…。本文については修正します。
kazu
2013/04/13 22:26
>普通データセンターをDCと略すか…?
略しますよ。
nobu
2013/05/24 18:21
普通iDCだろ
inshin
2013/05/29 19:25
>nobuさん、inshinさん
ご意見ありがとうございます。
データセンターを DC と略すか iDC と略すかは、普段自分(自社)が使っているサービスとか、周りにいる人の属性(どんなクラスタに近い人か)とか、もっといえば何系のベンダを使っているかとかにもよるかな、と思ってます。(データセンターサービスを提供している会社によっても、「データセンター」なのか「インターネットデータセンター」なのか違いますし。)
私自身が普段利用しているサービスでは「データセンター」や「DC」という表現を使っていて、「インターネットデータセンター」や「iDC」という表現は使わないので特に意識することなく DC と書いていたのですが、それが当たり前だと言うつもりもありません。
どちらの表現が一般的かというのは人によると思いますので、ブログ上ではより分かり易い表現に修正させて頂きました。
このブログについてはより多くの人に読みやすい形で記事を書いていきたいと思っていますので、今後もご意見がありましたらコメント頂ければと思います。
kazu
2013/05/29 22:54