対象 OS
Windows Server 2008 の全てのエディション
Windows 7 の全てのエディション
Windows Vista の全てのエディション
Windows Server 2008 R2の全てのエディション
Windows Server 2008(64-bit) の全てのエディション
Windows 7 64ビット の全てのエディション
Windows Vista 64ビット の全てのエディション
業務への影響:TCPを使った新規の通信ができなくなります (※ LISTENINGしているサーバーアプリは動き続けます)
復旧作業の必要性:あり
発生頻度:必ず 回避方法:あり
現象と発生条件
[現象]TCPのセッションが枯渇し、これを使うアプリケーションが通信できなくなります。
このときnetstatコマンドでセッションを確認すると大量のTIME_WAIT状態のセッションが残留したままになっています。
[環境]
特定の環境はありません。
[発生条件]
OS起動後、再起動することなく497日を超えて連続稼働している場合
※連続稼働日数は、タスクマネージャを起動し、パフォーマンスタブにて、起動時間を確認してください。
原因
TCPのTIME_WAIT状態を管理しているタイマー処理に不具合があり、連続稼働が497日を超えるとTIME_WAIT状態から解放されなくなり、セッションが残留するためです。発生を未然に防止する方法
以下のマイクロソフト社の Webサイトより修正プログラム(*1)(*2)をダウンロードし適用してください。修正プログラムの適用後、システムの再起動が必要です。
-マイクロソフトサポートオンライン
文書番号: 2553549
All the TCP/IP ports that are in a TIME_WAIT status are not closed after 497 days from system startup in Windows Vista and in Windows Server 2008
http://support.microsoft.com/kb/2553549/en-us
機械翻訳版はこちらです。
http://support.microsoft.com/kb/2553549/ja
*1: 修正プログラムを適用するには、次のいずれかのOSが動作している必要があります。
- Windows Server 2008 R2 SP1
- Windows Server 2008 R2
- Windows Server 2008 SP2
- Windows Server 2008
- Windows Server 7 SP1
- Windows Server 7
- Windows Server Vista SP2
- Windows Server Vista SP1
修正プログラムを適用できない場合には、以下の[回避方法]を実施してください。
[回避方法]
- 連続稼働日数が497日を超える前にOSを再起動してください。
何故497日なのか?
32bitであつかえる符号なし(unsigned)整数は0~4294967295までです。
(そのままでは4294967295+1は扱えない)
4294967295ミリ秒は約497日
参考 497日 ‐ 通信用語の基礎知識
どうも。初めまして^^
返信削除497日に違和感有りましたので、計算しました所、数字が一桁多い気がしました…
497日ではなく、49.7日ではないでしょうか。
49.7日だと、49.7*89600*1000 → 4,453,120,000
497日だと 497*89600*1000 → 44,531,200,000
KUさん
返信削除調べた挙句
返信していませんでした・・・すみません。
記事内の参考のリンクになりますが
何故か10ミリ秒単位で計算するのです。
ちょっと、理由は分からなかったのですが