回憶一次時鐘問題的解決(簡單粗暴)

xuexiaogang發表於2023-12-13

   我們公司每天中午午休時候會關燈。由於每次關燈時間都不一樣,我徒弟說說這一看就是為人的。機器執行理論上都是一個時間點。就這句話我想起來我十幾年前遇到的一次問題。那次問題就是機器執行,但是時間就是不準的。

 

   時間回到2008年,那時候我技術還很一般。有一個專案我去現場實施,那個專案說起來悲催。第一次去北京奧運會還沒開幕,第二次去倫敦奧運會都閉幕了。你說這種專案還談什麼規範。

 

   繼續說2008年的時候,我實施過後又一天公安的甲方找我,讓我查查為什麼時間不對。發現時鐘和北京時間差了半個小時。這種對於公安的業務來說是有極大問題的。比如違法處理,當事人說我這個時間點不在這裡。不是我的,不承認。還有追蹤在逃等問題就會錯過排查。我當時就想怎麼可能誤差這麼大嗎?這計算機的時鐘怎麼比手錶還誤差大?一看還真的差了半小時。那麼我就手工對時一下。那時候我還不懂NTP的對時,即使懂,那時候也沒條件做。對時完畢,我就想第二天看看是不是解決了。結果第二天發現慢了90多秒。這個誤差還真大,我做過了很多專案第一次遇到這個。於是各種猜測,比如重新安裝作業系統,我甚至都要求伺服器廠商來進行把主機板整體替換等手段最後依然無法解決。我想如果我離開後沒有人天天過來對時,時間一長必然誤差很大。我豈不是走不了了?

 

    最後不得已我想到的一個辦法是,既然一天24小時慢90多秒,那麼平均每個小時大約慢4秒。於是我想到了一個思路,做了一個程式後臺執行。每小時把時鐘調快4秒。這個原理其實和閏年閏月的設計差不多。我們現在的歷法就是這樣透過加減天的方式縮減誤差。據說1萬年誤差4天。最後執行下來,效果很好。其實即使有NTP的方式,其實質也是對偏差的時鐘進行對時。只是我這個是我透過後臺完成。然後把這個程式加到啟動組防止作業系統重啟後失效。

 

    說到這裡不得不提一下,在我處理好這個問題以後。當地公安在我們系統中查到了一個公安部A級通緝令的人和行車記錄,從而判定了他的出逃路線。最終抓獲了通緝犯,而且那次還是我查到的。如果時鐘當時偏差了,就真的是大海撈針不好查了。

 

 


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/637517/viewspace-2999964/,如需轉載,請註明出處,否則將追究法律責任。

相關文章