回憶一次時鐘問題的解決(簡單粗暴)
我們公司每天中午午休時候會關燈。由於每次關燈時間都不一樣,我徒弟說說這一看就是為人的。機器執行理論上都是一個時間點。就這句話我想起來我十幾年前遇到的一次問題。那次問題就是機器執行,但是時間就是不準的。
時間回到2008年,那時候我技術還很一般。有一個專案我去現場實施,那個專案說起來悲催。第一次去北京奧運會還沒開幕,第二次去倫敦奧運會都閉幕了。你說這種專案還談什麼規範。
繼續說2008年的時候,我實施過後又一天公安的甲方找我,讓我查查為什麼時間不對。發現時鐘和北京時間差了半個小時。這種對於公安的業務來說是有極大問題的。比如違法處理,當事人說我這個時間點不在這裡。不是我的,不承認。還有追蹤在逃等問題就會錯過排查。我當時就想怎麼可能誤差這麼大嗎?這計算機的時鐘怎麼比手錶還誤差大?一看還真的差了半小時。那麼我就手工對時一下。那時候我還不懂NTP的對時,即使懂,那時候也沒條件做。對時完畢,我就想第二天看看是不是解決了。結果第二天發現慢了90多秒。這個誤差還真大,我做過了很多專案第一次遇到這個。於是各種猜測,比如重新安裝作業系統,我甚至都要求伺服器廠商來進行把主機板整體替換等手段最後依然無法解決。我想如果我離開後沒有人天天過來對時,時間一長必然誤差很大。我豈不是走不了了?
最後不得已我想到的一個辦法是,既然一天24小時慢90多秒,那麼平均每個小時大約慢4秒。於是我想到了一個思路,做了一個程式後臺執行。每小時把時鐘調快4秒。這個原理其實和閏年閏月的設計差不多。我們現在的歷法就是這樣透過加減天的方式縮減誤差。據說1萬年誤差4天。最後執行下來,效果很好。其實即使有NTP的方式,其實質也是對偏差的時鐘進行對時。只是我這個是我透過後臺完成。然後把這個程式加到啟動組防止作業系統重啟後失效。
說到這裡不得不提一下,在我處理好這個問題以後。當地公安在我們系統中查到了一個公安部A級通緝令的人和行車記錄,從而判定了他的出逃路線。最終抓獲了通緝犯,而且那次還是我查到的。如果時鐘當時偏差了,就真的是大海撈針不好查了。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/637517/viewspace-2999964/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單粗暴的去重promise的回撥Promise
- 簡單的回憶
- 解決 Laravel 接收非簡單請求時,只有收到 OPTIONS 請求的問題Laravel
- 簡單瞭解下JMM解決什麼問題
- 解決golang 的記憶體碎片問題Golang記憶體
- 一個簡單的統計問題(解決方案:Trie樹)
- 記錄一次解決App崩潰問題的解決方案APP
- 記一次記憶體溢位問題的排查、分析過程及解決思路記憶體溢位
- 記一次 rr 和硬體斷點解決記憶體踩踏問題斷點記憶體
- 記一次 Composer 問題的解決過程!!
- 簡單介紹redis分散式鎖解決表單重複提交的問題Redis分散式
- 一次 nginx 返回 302 問題解決Nginx
- 解決吞吐效能問題時的思路
- RCmongodb出現id重複問題的簡單解決辦法jztMongoDB
- Matlab2013a安裝簡單教程以及遇到的問題解決(反覆提示啟用問題)Matlab
- 簡單介紹Nginx tp3.2.3 404問題解決方案Nginx
- 對於記憶體洩漏問題的簡單認知記憶體
- 解決git記憶體洩露問題Git記憶體洩露
- 簡單粗暴有效的mmap與remap_pfn_rangeREM
- 分享五款功能簡單粗暴的小軟體
- 一次線上問題的排查解決過程
- 記錄一次無法很好解決的問題
- 故障解析丨一次死鎖問題的解決
- 前公司一次線上問題解決的旅程
- php常駐程式記憶體洩露的簡單解決PHP記憶體洩露
- 解決MongoDB儲存時間時差的問題MongoDB
- 關於從其他程式切回word文件時卡頓問題的解決辦法
- 解決 go get 超時問題Go
- QOJ6958-複雜的雙樹上問題以及簡單的解決方式
- Excel+Python十分鐘跑完批次API,就是這麼簡單粗暴又好用ExcelPythonAPI
- 解決Instruments檢測記憶體洩漏時真機無法定位的問題記憶體
- C# 09修改介面引數_簡單粗暴C#
- 【Android Fragment】解決Fragment多層巢狀時onActivityResult無法正確回撥的問題AndroidFragment巢狀
- TiDB in 2023, 一次簡單的回顧丨PingCAP 唐劉TiDBPingCAP
- 簡單幾步解決win10 ghost您的電腦遇到問題的方法Win10
- 解決 nginx 反向代理時的 upstream timeout 問題Nginx
- 解決代理超時問題的三種方法
- 基於Mongodb分散式鎖簡單實現,解決定時任務併發執行問題MongoDB分散式