Upload
tsuyoshi-hisamatsu
View
1.014
Download
0
Embed Size (px)
Citation preview
うるう秒とは 原子時計の登場
地球の自転にムラにあることが分かる 地球の自転と原子時計の時刻差を 0.9 秒以内に収めるための「うるう秒」
1 秒足す( 59 分 60 秒) 1 秒減らす( 59 分 58 秒の次は 0 分 0 秒)
将来の長期的な自転速度の予測が困難なためうるう秒の実施時期は未定
国際原子時と協定世界時 1958 年 1 月 1 日 0 時を原子時 0 時として始動 国際度量衡局が管理
世界各地にある原子時計の示す時刻を加重平均して決定→協定世界時 国際原子時と協定世界時
2017 年の段階で 37 秒ずれ http://jjy.nict.go.jp/mission/page1.html
前回起きたこと 2015 年 7 月 1 日 Java プロセスの CPU 使用率上昇 Ruby プロセスの CPU 使用率上昇 下記コマンドを投入して回避
date `date +'%m%d%H%M%C%y.%S'`
うるう秒と NTP
1. うるう秒実施予告情報の送付 NTP パケット内 Leap Indicator が 12 月 31 日 9 時より有効になる
2. 当該時間にうるう秒の挿入 NTP Timeは過去のうるう秒を積算していない
Linux でうるう秒を取り扱うことはできる? 08:59:60 を取得するには?
right/Asia/Tokyo という特殊なタイムゾーンを設定する :59:60 を刻んで問題なければ・・・
ただし MySQL では datetime 型で :59:60 、 :59:61 はエラーになる https://dev.mysql.com/doc/refman/5.7/en/time-zone-leap-seconds.html
うるう秒と NTP/UNIX Time の積算秒数UTC JST NTP Time UNIX Time
2016/12/31 23:59:59
2017/01/01 08:59:59 3692217599 1483228799
2016/12/31 23:59:60
2017/01/01 08:59:60 3692217600 1483228800
2016/01/01 00:00:00
2017/01/01 09:00:00 3692217600 1483228800
2016/01/01 00:00:01
2017/01/01 09:00:01 3692217601 1483228801
http://jjy.nict.go.jp/news/leaps2017.html
NTP の各モードSTEP モード
NTP サーバから取得した時刻をシステム時刻に即反映 ±128 ミリ秒以上の差があると即座
SLEW モード NTP サーバから取得した時刻をシステム時刻に徐々に反映 ±600 ミリ秒を超過した差
即座に反映 システム再起動などを想定
±600 ミリ秒以内の場合 1 秒間に最大 5 ミリ秒ずつ修正
参考: http://www.seiko-sol.co.jp/leap-second/no-03/
NTP の各モードとうるう秒STEP モード
59 秒が 2 度発生するSLEW モード
秒間 5 ミリ秒ずつ修正 200 秒かけて修正完了
STEPモード SLEWモード8:59:59.000000 8:59:59.000000
... ...8:59:59.999999 8:59:59.9999998:59:59.000000 9:00:00.000000
... ...8:59:59.999999 ...9:00:00.000000 ...
... ...9:03:20.000000 9:03:20.000000
Windows は?1. Leap Indicator の反映無し2. 実際の時刻より 1 秒進む3. 「この時間の差は、次の同期のときに解決されます」
https://support.microsoft.com/ja-jp/kb/909614
ntp-4.2.6p5-30.24.amzn1(AmazonLinux) 以降
ntpd を SLEW モードで起動1. ntpd を停止2. ntpd の起動オプションに -x を追加3. ntpd を起動
ntp-4.2.6p5-30.24.amzn1 より古い場合 バージョンアップをしないと下記の振る舞いをする(バグ)
Leap Indicator を受信 Linux Kernel には渡さない うるう秒になったら 1 秒戻す (厳密には 9:00:00 を過ぎてから 8:59:00 に戻す) https://bugzilla.redhat.com/show_bug.cgi?id=1190619 https://forums.aws.amazon.com/ann.jspa?annID=3064
ntp-4.2.6p5-30.24.amzn1 より古い場合ntpd を更新する場合
ntpd を更新後、前の対応を実施glibc が上がるので更新しない場合
1. うるう秒挿入前 ntpd を止める
2. LeapIndicator のリセット ntptime –s 0
3. うるう秒挿入後 SLEW モードで ntpd を起動