syslogは実は重い→syslog-ngやdaemontoolsのmultilogにしてみるとか

メモ。技術的な話。

Linuxはもちろん多くののUNIXではログの入出力にsyslogdが使われている。 標準でついているものだし、古くからあるものだしバグも枯れてるし、 様々な入門書やWebサイトで広く解説されていて、しかしその問題点に触れているものは少ないせいか、 何の疑問も持たずに日々使っている人も多いだろう。

そう。実はsyslogデーモンは大きな問題点を抱えている。

  1. ディスクI/Oの方式がかなり非効率的(というか今風ではない)なため、重いし遅い。
  2. リモートでログ情報をやり取りしようとすると漏れが発生しやすい。
上記の2はともかく1は、実は致命的とも言えるほどの遅さなのだ。
で、syslog から daemontool へ変更した結果、top で監視したところ、 iowait が 50 %超→15 %前後まで軽減されました。
syslog は I/O 負荷が高い → daemontool に移行しよう! (Drk7jp 2006.5)
なんでそんなにsyslogdは遅いのよ?!という話は以下の記事が詳しい。
99syslog - syslog() 及び syslogd の考察(最終更新:2003/5/30)
上の記事にある話は筆者も前々からうわさ程度には知っていたものの、 じゃあsyslogdじゃない選択肢ってどんだけある?(種類とか実績とか)ってあたりで詰まっていた。

が、そろそろ本気でsyslogd以外の選択肢を考えるころあいなのかもしれない。

動作ログというものは記録という目的以外に、その内容の監視という側面もある。 syslogdには監視機能はないため、swatchなどを併用しているケースが多いのだが、 swatchがこれまたperlでできていて、重い。perlプロセスの常駐というのは結構なリソースを食う。 apacheのmod_perlのように、多少重いのは承知のうえで使うメリットのほうが大きいというのならともかく、 あまりリソースを食わないに越したことはない。 そもそもログデーモン自体に監視機能もついているべきと考えるのが妥当であり、daemontoolsやsyslog-ngはそれを実践してくれている。

ただ、qmailやdjb-dnsをはじめとするD. J. Bernsteinさん提唱のツール群は独特すぎるっていうかもはや宗教っぽくて(笑)筆者はどうも気が進まない。syslog-ngかなぁやっぱり。でもsyslog-ngは基本としてFreeBSD向けに作られてるっぽいのでLinux屋としてはやっぱり気が進まない。まあぼちぼち情報集めるか。

see also:
syslogとswatchからsyslog-ng乗り換えについて雑多メモ

トラックバックURL

このエントリーのトラックバックURL:
http://www.ywcafe.net/mt/mt-tb.cgi/574

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)


画像の中に見える文字を入力してください。