回憶一次時鐘問題的解決(簡單粗暴)
我們公司每天中午午休時候會關燈。由於每次關燈時間都不一樣,我徒弟說說這一看就是為人的。機器執行理論上都是一個時間點。就這句話我想起來我十幾年前遇到的一次問題。那次問題就是機器執行,但是時間就是不準的。
時間回到2008年,那時候我技術還很一般。有一個專案我去現場實施,那個專案說起來悲催。第一次去北京奧運會還沒開幕,第二次去倫敦奧運會都閉幕了。你說這種專案還談什麼規範。
繼續說2008年的時候,我實施過後又一天公安的甲方找我,讓我查查為什麼時間不對。發現時鐘和北京時間差了半個小時。這種對於公安的業務來說是有極大問題的。比如違法處理,當事人說我這個時間點不在這裡。不是我的,不承認。還有追蹤在逃等問題就會錯過排查。我當時就想怎麼可能誤差這麼大嗎?這計算機的時鐘怎麼比手錶還誤差大?一看還真的差了半小時。那麼我就手工對時一下。那時候我還不懂NTP的對時,即使懂,那時候也沒條件做。對時完畢,我就想第二天看看是不是解決了。結果第二天發現慢了90多秒。這個誤差還真大,我做過了很多專案第一次遇到這個。於是各種猜測,比如重新安裝作業系統,我甚至都要求伺服器廠商來進行把主機板整體替換等手段最後依然無法解決。我想如果我離開後沒有人天天過來對時,時間一長必然誤差很大。我豈不是走不了了?
最後不得已我想到的一個辦法是,既然一天24小時慢90多秒,那麼平均每個小時大約慢4秒。於是我想到了一個思路,做了一個程式後臺執行。每小時把時鐘調快4秒。這個原理其實和閏年閏月的設計差不多。我們現在的歷法就是這樣透過加減天的方式縮減誤差。據說1萬年誤差4天。最後執行下來,效果很好。其實即使有NTP的方式,其實質也是對偏差的時鐘進行對時。只是我這個是我透過後臺完成。然後把這個程式加到啟動組防止作業系統重啟後失效。
說到這裡不得不提一下,在我處理好這個問題以後。當地公安在我們系統中查到了一個公安部A級通緝令的人和行車記錄,從而判定了他的出逃路線。最終抓獲了通緝犯,而且那次還是我查到的。如果時鐘當時偏差了,就真的是大海撈針不好查了。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/637517/viewspace-2999964/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單粗暴的去重promise的回撥Promise
- 用簡單的方法解決問題
- 工程make時出現"時鐘錯誤的問題"的解決方案
- 簡單問題複雜著解決
- 簡單粗暴的 Caddy ServerServer
- 【OC刨根問底】-Runtime簡單粗暴理解
- Resin的中文問題最簡單的解決方法
- 看到說面試阿里的問題,回憶回憶呀面試阿里
- 解決 Laravel 接收非簡單請求時,只有收到 OPTIONS 請求的問題Laravel
- 簡單瞭解下JMM解決什麼問題
- 關於時鐘的設定 hwcolck ,主要解決系統時鐘和硬體時鐘不一致的問題(轉)
- 【問題解決】單機搭建dataguard的問題
- freebsd簡單漢化終結篇[解決了簡單漢化的所有問題(轉)
- 暫時解決的中文問題
- 一個簡單的統計問題(解決方案:Trie樹)
- 解決golang 的記憶體碎片問題Golang記憶體
- 簡單粗暴地理解 JS 原型鏈JS原型
- 簡單粗暴地理解 JavaScript 原型鏈JavaScript原型
- 解決Redmine建立&更新問題時很慢的問題
- 記錄一次解決App崩潰問題的解決方案APP
- 解決吞吐效能問題時的思路
- Golang解決XORM的時區問題GolangORM
- 前公司一次線上問題解決的旅程
- 一次線上問題的排查解決過程
- 記一次跨域問題的解決方案跨域
- 記一次 rr 和硬體斷點解決記憶體踩踏問題斷點記憶體
- 記一次記憶體溢位問題的排查、分析過程及解決思路記憶體溢位
- 簡單粗暴有效的mmap與remap_pfn_rangeREM
- 分享五款功能簡單粗暴的小軟體
- 簡單介紹redis分散式鎖解決表單重複提交的問題Redis分散式
- 硬體時鐘與系統時鐘同步問題
- 解決Apache長時間佔用記憶體大的問題,Apache 記憶體優化方法Apache記憶體優化
- 簡單介紹Nginx tp3.2.3 404問題解決方案Nginx
- RCmongodb出現id重複問題的簡單解決辦法jztMongoDB
- 簡單的設定:解決Win XP網路訪問難題(轉)
- 解決MongoDB儲存時間時差的問題MongoDB
- 難解決的記憶體洩露(OutOfMemory)問題!!!記憶體洩露
- 解決git記憶體洩露問題Git記憶體洩露