今天在一台重要的 SVN Server 被告知系統時間錯誤,但這台 Server 一直以來都有同步內部的 Time Server
如圖所示看起來也沒有太大的異常,但實際的誤差時間高達 8 小時
這個誤差值來自於 Windows Default 的設定
在預設的 Time Service 登錄檔內可以設定誤差值以及輪詢的時間
以 Windows 2003 為例
到 Time Service 的登錄檔路徑
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
有以下參數可以做調整,以下單位都以秒計算
MaxPosPhaseCorrection 此參數為最大正值的誤差限制
MaxNegPhaseCorrection 此參數為最大負值的誤差限制
MaxPollInterval 此參數為系統背景排程輪詢的時間
SpecialPollInterval 此參數為手動輪詢的時間
此篇首要修改的是 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection,這兩個參數的預設值都是 54,000 秒,也就是 15 小時
這兩項參數是基於 Windows 安全性設定,只要超過正負值 15 小時就會阻擋時間同步,並記錄在 事件檢視器內
在微軟的 KB文章建議設定為 15分鐘或者更低
設定 Windows Time 服務,以防止大規模的時間位移
但為了時間的正確性,在此將安全性時間改為無限制,並且縮短 client 同步輪詢的時間
在考慮系統更新頻率以及網路環境下小弟設定為以下
MaxPosPhaseCorrection FFFFFFFF
MaxNegPhaseCorrection FFFFFFFF
MaxPollInterval 15
SpecialPollInterval 604,800
避免讓系統耗費在 sync time 太多時間,誤差調整在可接受範圍內即可。
參考資料
http://blog.miniasp.com/post/2009/06/How-to-adjust-Time-using-Windows-Time-Service.aspx