ex1-lab

Linux, CentOS, Mac OS X, Windows, 仮想化, Apache等のLinux中心に気になることをメモがわりに・・・

2015/07/01 うるう秒対策 まとめ

      2016/11/17 この記事は約4分で読むことができます。

2012年のうるい秒で、筆者の管理しているサーバーで比較的に新しいカーネルサーバーは、軒並みCPU100%になりうるう秒の障害に直面しました。その時はdateコマンドで時刻を設定してntpdを再起動を実施した記憶があります

2012年のうるう秒から3年、2015年の7月に「うるう秒」が発生します

日本時間の2015年7月1日にうるう秒が追加されることが発表

うるう秒実施日一覧(NICT/日本標準時プロジェクト)

うるう秒とは?

原子時計で測られる標準時刻と地球の自転速度との間に生じるずれを調整する目的で、数年に1度、不定期に挿入される1秒間。

うるう秒の調整実施日

2015年7月1日の午前8時59分59秒と午前9時00分00秒の間に、「8時59分60秒」が挿入される。これにより、当日は1日の時間が1秒分だけ長くなります
通常では、「08:59:59」の次の時刻は「09:00:00」ですが、うるう秒の調整される場合は、「08:59:59」→「08:59:60」→「09:00:00」となります

うるう秒で発生する問題・障害

・2012年7月1日のうるう秒の時は、LinuxサーバのプロセスがCPU100%に張り付くという現象などが発生、筆者の運用しているサーバーもこれが発生しました
・MySQL・Java・FirefoxなどのソフトがCPU100%に張りつく

障害の原因は?

根本的な原因はLinuxカーネルの不具合です、ネットで調べれば詳しく紹介されているサイトがありますのでそちらを参考にして下さい

障害の発生条件

  • 古いカーネル、ntpdをカーネルを利用している
  • ntpd を利用して、上位の NTP サーバと時刻情報の同期を実施している
  • 上位 NTP サーバが「うるう秒情報」を送信してくる
  • ntpd を STEP モードで動作させている(標準で起動した場合このモードになります)

対策

何通りの対策があると思いますが、以下の方法があります

  • うるう秒を迎える時に、ntpdを停止しその後に起動する
  • ntpdをSLEWで起動する

参考URL:うるう秒の影響は受けますか? - Red Hat Customer Portal

ntpdを停止してうるう秒を迎える

ntpd を停止します。

ntptime -s 0 を実行するとカーネルの状態をリセットします。

うるう秒が迎えてから、SLEWモードでntpdateを実行してから、その後ntpdを起動する

ntpdをSLEWで起動してうるう秒を迎える

ntpd を停止します。

ntptime -s 0 を実行するとカーネルの状態をリセットします。

-x オプション (ntp slew モード) で ntp を設定します。

もし障害が発生したら

仮にプロセスのCPUが100%に張り付くような2012年と同様の症状が発生した場合は、ntpdを停止して以下のコマンドを実行します

うるう秒があるか確認

NTPによってうるう秒の情報が伝わってきているかの確認をする方法です。

という情報が確認できます。leap=00というのがLeap Indicatorです。

00 の場合は調整は発生しません
01 正の調整が発生
10 負調整が発生

chrony うるう秒について

(2016/06/25追記)
うるう秒まであと1週間を切りましたが、「chrony」のうるう秒について記載していなかったので追加しときます
「chrony」はCentOS7 から採用されたNTPクライアント兼サーバです。こちらの方はうるう秒の対応は必要がないかと思われます。
「chrony」は、「makestep」「maxslewrate」でSLEWモード、STEP モードの調整が可能です
詳しくは以下のサイトで確認して下さい



 - Linux