Mac OS X Leopard の syslogd 暴走問題

 最近どうもおかしいと思っていたのだけど、アクティビティモニタで各プロセスのCPU使用率を見てみると、syslogdのCPU使用率が常にほぼ100%になっていた。 しかし、プロセスの優先度は低くなっているようで、他のプロセスがCPUを使う時にはそちらが優先されるので、あまり遅いとは感じていなかった。syslogdが何なのかよくわかっていなかったので、そんなもんなのかなとも思ったけど、ネットで調べてみたらこれは不具合のようです。どうやら、syslogd がアクセスする asl.db というファイルの容量がある程度以上に大きくなるとsyslogdが暴走するそうです。同様の問題を抱えたユーザーがAppleに不具合を報告したところ、次の解決策を提示されたそうです。

ターミナル(/アプリケーション/ユーティリティ/ターミナル.app)を開いて、次の3つのコマンドを入力してください。
(最初のコマンドでパスワードが聞かれるのでそれも入力する。)

sudo launchctl stop com.apple.syslogd
sudo rm /var/log/asl.db
sudo launchctl start com.apple.syslogd

最初のコマンドでは、syslogdを停止させ。
2番目では、asl.dbを削除する。(後でまた作成されるので削除しても構わない。)
3番目では、syslogdをまたスタートさせる。

これでとりあえずsyslogdの暴走は止みました。なんだかアプリケーションの起動が速くなった気がします。結構負担になってたのかもしれないですね。

ただ、これだけだとまたasl.dbの容量が大きくなった時に問題が再発する恐れがあるそうです。syslogdの設定ファイルを書き換えると再発が防げるらしいのですが、どのように書き換えるのかよくわからなかったので、とりあえずはこれで良しとします。

10.5.2で解決されるかと思ったのですが、まだ解決していないみたいですね。

元情報は、Smarticusというブログのコメント19です。
http://smartic.us/2007/11/8/leopard-100-cpu-usage-caused-by-syslogd-and-possibly-time-machine