うるう秒でサーバが暴走

久々のエントリーになります。

さて、久しぶりにminecraftのサーバを起動して遊ぼうと思ったら、
[WARNING] Can’t keep up! Did the system time change, or is the server overloaded?
というエラーが3秒おきくらいに現れるようになっていました。

どうも、マシンの負荷が高すぎるときによくあるメッセージらしいのですが
minecraft_serverのバージョンを上げてもいないし、ましてハードの変更もありません。

topコマンドで確かめてみると、javaが100%超えなのはいつものこととして、
ksoftirqd/0とksoftirqd/1という割り込みのためのプロセスがともに40%超え。
そんなにカツカツのマシンではないはずなのに…
と思って調べたところ、次の方のブログに出会いました。
SH2の日記 うるう秒のあとにMySQLなどのCPU使用率が高騰する件について
http://d.hatena.ne.jp/sh2/20120702

こちらの記事を引用させていただきますと、
2012-07-01 08:59:60(JST)のうるう秒以降、比較的新しいカーネルを搭載した
Linux機において、上位NTPサーバがLeap Indicatorntpdを送信してくる場合に
今回の問題が起こるようで、ntpdを動かしていないマシンでは影響がない
ということです。
javaの問題ではなく、Linuxカーネルの不具合のようです。

当方のサーバのsyslogにも次のようなログが残っていました。
Jul  1 08:59:59 SangouLabServer kernel: [1688457.632186] Clock: inserting leap second 23:59:60 UTC

対処方法は
・サーバを再起動させる
・次のコマンドを実行して日付を再設定
# date `date +’%m%d%H%M%C%y.%S’`

うちのサーバは再起動をためらうほどのトラフィックもないので、あっさり再起動しました。

minecraft_serverを起動してみましたがエラーもまったく表示されていませんし、
topコマンドでプロセスを眺めていてもksoftirqdの出番はないようです。

一件落着、めでたし、めでたし。

今回は問題発覚から解決までスピード解決でした。
素早い情報提供のsh2さんに感謝。
(といっても一方的に記事を引用させていただいただけですが…)

minecraftから本問題に直結する検索結果が得られなかったので、
この記事がどなたかの参考になることを祈っています。

投稿者:

さんごう

さんごう研究所所長。ソーラーカーのドライバー、あと電気エンジニア。そこそこカメラマン。自宅サーバを立てた理由はサイトに広告が表示されるのが嫌だったから。

コメントを残す

メールアドレスが公開されることはありません。