由于linux kernel 2.6.29之前版本存在bug,在進行閏秒調整時可能會引起系統時鐘服務ntpd程序死鎖。debian lenny、rhel/centos 5等舊發行版今天仍被廣泛使用,部分供應商早已經釋出了更新檔。
閏秒導緻部分linux伺服器高cpu使用率
國際地球自轉和參考坐标系統服務(iers)在2012年6月30日午夜(中原標準時間7月1号7點59分59秒)增加一閏秒(即出現7:59:60)。由于linux kernel 2.6.29之前版本存在bug,在進行閏秒調整時可能會引起系統時鐘服務ntpd程序死鎖。debian lenny、rhel/centos 5等舊發行版今天仍被廣泛使用,部分供應商早已經釋出了更新檔。
但除了linux伺服器外,一些伺服器程式也因為閏秒出現了問題,如reddit、mozilla、foursquare、yelp、linkedin和gawker等網站都短暫遭遇了技術問題,國内的一家雲儲存供應商發現運作在centos 6.2上的java和mysql因閏秒出現了不同程度的cpu使用率增長,猜測是jvm和mysql試圖通過cpu硬體晶振的資料獲得目前精确的時間,由于閏秒的關系,這個時間和作業系統維持的牆上時間(wall time,也就是顯示給使用者看的時間)不一緻,導緻了這個問題。簡單的修正方法是強制重置系統時間,讓系統中所有時間回到同步的狀态
近日,國際地球自轉和參考系統服務地球定向中心(iers)通過推特重申,國際标準時間utc将在格林尼治時間2016年12月31日23時59分59秒(中原標準時間2017年1月1日7時59分59秒)之後,在原子時鐘實施一個正閏秒,即增加1秒,然後才會跨入新的一年。
每隔一段時間,目前世界範圍内通用的協調世界時(utc)會與依據地球圍繞太陽運動計算的平太陽日和世界時(ut1)出現很小的偏差,需要對utc增加或者減少一秒來消除。
簡要解決方法:在發生閏秒前停掉ntpd服務,閏秒發生後再開啟ntpd
根解:放棄使用ntpd,使用簡化的sntp協定,同時在實作直接調用settimeofday來完成,不會觸發核心的事件調整異常
java fortunately the fix is straightforward:
mysql