うるう年ならぬ、うるう秒が来ます2015.06.15インフラ技術ブログうるう年ならぬ、うるう秒が来ます初めまして、こんにちは、今回からインフラ関連のブログを書くことになりました、kirksenchoです。第一回目は、今月末に迫ったうるう秒について書きたいと思います。うるう秒とは?普段うるう年はよく聞くと思いますが、うるう秒はあまり聞き慣れないと思います。一般の生活に直接は関わってきませんが、コンピュータ社会ではかなり影響の大きい問題となっています。次回のうるう秒は、日本時間では2015年7月1日の午前9時0分ですが、協定世界時のUTCでは、6月30日と7月1日の境目に、時間が1秒挿入されます。地球が一周する時間を24時間として私達は生活していますが、実はきっかり24時間ではなくムラもあるので、ズレが検出されると時間を足したり引いたりして調整が行われます。公式サイト今までは、毎回1秒足される調整が行われてきました。どんな影響が?3年前の2012年7月1日の、うるう秒挿入時に事件は起きました。一部のカーネルバージョンのLinuxサーバで、カーネルパニックや、CPU使用率の急上昇と高負荷張り付きなどが発生しました。さくらインターネットさんでは、以下の様な発表がありました。「うるう秒」挿入実施に伴うサービスへの影響についてサーバに障害が起きてしまうと、サービスが停止してしまうという大事故に繋がりますので、対策は必須となります。どんな対策が?私が関わっている業務の一つに、幾つかのクラウドのインフラ構築管理があります。その各クラウド全てで対策必須という事で色々と検討した結果、全ての対象LinuxサーバのLinuxカーネルをバージョンアップするのは非常に難しい為、ntpdとchronydを合わせた代理NTPサーバを立てて、恒久的解決を図ろうという事になりました。ntpdとは?chronyd公式サイトその対策方法の詳細については、最近私がデビューしたQiitaのブログに記載していますので、興味のある方は参照してみてください。Qiita:間もなく来るうるう秒を控えてやっておくべき事さて、今回のブログで紹介したいのは、うるう秒対策を検証する為に使用した、簡易SNTPプログラムの利用方法です。プログラムは、NICTの時空標準研究室のサイトで公開されています。2005.12.01perlで書かれていますが、うるう秒を指定した時間に自由に発生させられるSNTPサーバを立てられるという便利なプログラムです。うるう秒発生の指定方法など、割と分かりにくい感じでしたので、具体的な事例を元にご紹介したいと思います。うるう秒テスト用SNTPサーバ公開されているperlのソースコードは以下です。$client);}この中で修正すべき行は以下の3行です。UTC1行目は以下のように修正します。UTC次回のうるう秒挿入は7/1なので、その一日前をUTC基準で記載します。2行目は以下のように修正します。UTC実際にうるう秒が挿入される時間をUTC基準で記載します。3行目は、実際にうるう秒を発生させたい時間が、日本時間で6/15の15時0分だった場合は、以下のように修正します。UTCUTCで記載するので、15時の9時間前の6時で記載します。ここまで編集が終わったら、sntp-server.plと名前を付けて保存し、以下のコマンドで実行します。&amp;プログラムに実行権限を追加して実行していますが、最後に&を付けてバックグラウンドジョブにしています。する事によって、このコマンドを打ち込んだコンソールを引き続き別の事に使用できます。&を付けていないと、プログラムを終了させるまでは、実行したコンソール画面で別のコマンドは実行できなくなります。以下のコマンドで現在バックグラウンドで動いているジョブが確認できます。&amp;これでうるう秒を発生させる簡易SNTPサーバが立ち上がりました。あとは検証したいサーバのntpdの設定で、簡易SNTPサーバのIPアドレスを設定し、うるう秒が来るのを待つだけです。条件を変えて、何度もうるう秒を起こさないとならないと思いますが、その場合は上記修正対象の3行目だけを変えていけばOKです。検証したいサーバの準備もあるので、15分から20分くらいは未来の時間を指定すると良いでしょう。おわりに今回は、うるう秒を自由に発生させられる便利なperlプログラムの使い方について、解説してみました。うるう秒対策が捗る助けになれば幸いです。次回のブログはうるう秒が過ぎた後になる予定なので、後日談などがあれば掲載したいと思います。indexともに世界をアップグレードできる、そんな日を夢見て。