夏なので我が家の Mac mini の Lion Server も暴走してます。
と思ったのですが、暑さだけでは無さそうな気配。アクティビティモニタを立ち上げると syslogd が暴走して CPU 使用率100%に。うんともすんともならないので電源ボタン長押しで強制終了。
原因
syslogd が悪いわけですが、なぜ syslogd が暴走するのか。
syslogd がアクセスする asl.db というファイルの容量がある程度以上に大きくなるとsyslogdが暴走する
Mac OS X Leopard の syslogd 暴走問題 - 津駄の日々
という話があったり
asl.dbが存在しない状態でも、syslogdの暴走は起きる…巨大なログファイルを探し出して消す
G-ZONE BLOG : MacOSでのsyslogd暴走の本当の原因と対策
という話があったり。
まあ両方とも真実なのだと思います。
ただ Leopard だと /var/log/asl.db ファイルがあるのですが、Lion だとそのファイルがなくて /var/log/asl フォルダがあります。
どうもSnow Leopardからは単純なフォルダ構成になったようです。
移動してみると見事復活しました。
Snow Leopardでsyslogdが暴走したら。 | cocoa*life
同様にやってみましょう。
やってみる
まずは asl を移動させます(というかリネームしただけ)。なお、すぐに asl フォルダが復活します。
$ cd /var/log $ sudo launchctl stop com.apple.syslogd $ sudo mv asl/ asl.150806.bak $ sudo launchctl start com.apple.syslogd
そして大きいログをリネーム。
$ ls -lS total 49616 -rw-r--r-- 1 root wheel 12317380 8 6 10:09 fsck_hfs.log -rw-r--r-- 1 root wheel 2793329 8 6 10:14 servermgrd.log -rw-r--r-- 1 root wheel 2068266 8 6 03:19 daily.out -rw-r--r-- 1 root wheel 1373124 8 5 21:50 launchd-shutdown.log.1 -rw-r--r-- 1 root wheel 1342231 8 5 22:08 launchd-shutdown.log : $ sudo mv fsck_hfs.log fsck_hfs.150806.log $ sudo mv servermgrd.log servermgrd.150806.log $ sudo mv daily.out daily.150806.out
ってことで
まあこれで様子を見てみます。
8/19続き。
うちのサーバで syslogd が暴走する条件の一つが分かりました。
Time Machineで更新ファイルのスキャンが終わったあとに
Aug 19 23:21:14 mini kernel[0]: Aug 19 23:21:19: --- last message repeated 7983 times --- Aug 19 23:21:19 mini kernel[0]: Aug 19 23:21:29: --- last message repeated 15215 times --- Aug 19 23:21:29 mini com.apple.backupd[1324]: Finished scan Aug 19 23:21:29 mini kernel[0]: Aug 19 23:21:34: --- last message repeated 179 times ---
というエラーがしつこく出ます。
その後
Aug 19 23:21:34 mini com.apple.launchd[1] (com.apple.ReportCrash.Root[1655]): posix_spawn("/System/Library/CoreServices/ReportCrash", ...): Input/output error Aug 19 23:21:34 mini kernel[0]: Aug 19 23:21:35: --- last message repeated 1 time --- Aug 19 23:21:34 mini com.apple.launchd[1] (com.apple.ReportCrash.Root[1655]): Exited with code: 1 Aug 19 23:21:34 mini com.apple.launchd[1] (com.apple.ReportCrash.Root): Throttling respawn: Will start in 10 seconds Aug 19 23:21:34 mini kernel[0]: Aug 19 23:21:36: --- last message repeated 473 times --- Aug 19 23:21:34 mini org.postgresql.postgres[83]: could not write to log file: Invalid argument Aug 19 23:21:34 mini kernel[0]: Aug 19 23:21:36: --- last message repeated 37 times --- Aug 19 23:21:34 mini org.postgresql.postgres[83]: could not write to log file: Invalid argument Aug 19 23:21:34 mini kernel[0]: Aug 19 23:21:36: --- last message repeated 39 times --- Aug 19 23:21:34 mini org.postgresql.postgres[83]: could not write to log file: Invalid argument Aug 19 23:21:34 mini kernel[0]: Aug 19 23:21:36: --- last message repeated 43 times --- Aug 19 23:21:34 mini org.postgresql.postgres[83]: could not write to log file: Invalid argument Aug 19 23:21:34 mini kernel[0]: Aug 19 23:21:36: --- last message repeated 39 times --- Aug 19 23:21:34 mini org.postgresql.postgres[83]: could not write to log file: Invalid argument Aug 19 23:21:34 mini kernel[0]: Aug 19 23:21:36: --- last message repeated 39 times --- Aug 19 23:21:34 mini org.postgresql.postgres[83]: could not write to log file: Invalid argument Aug 19 23:21:34 mini kernel[0]: Aug 19 23:21:36: --- last message repeated 39 times --- Aug 19 23:21:34 mini kernel[0]:
のように org.postgresql.postgres からエラーが出ます。 syslog が SQL で管理されているのか、もしくは Time Machine の管理が SQL なのか、どうなんだか知りませんが、しかし log ファイルに書き込めないと言ってくるのですから、そのあたりが悪いのでしょう。
この状態から syslogd を止めようとしてもウンともスンとも言ってくれません。まだ反応があるのはマシです。
$ sudo launchctl stop com.apple.syslogd sudo: can't stat /var/db/sudo/admin: Input/output error
ひとまず何をしようとしても I/O エラーで止められます。
サーバ自体は生きてるけどこちらからの入力を全く受け付けない。
ので電源を落とすしかない。
さて…どう解決しようか(考え中。
まずは Time Machine を切りました>_<
その後…内蔵HDDが死にましたorz どうやら「 log ファイルに書き込めないと言ってくる」のはHDDの問題だったようです。(ので、SSDを買いました…出費orz)
こちらからは以上です。