Lion Serverのsyslogdが暴走

夏なので我が家の 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)
こちらからは以上です。