1月 17 2009

syslog-ng が速い

Published by HoLY under tech

標準の syslog は遅い。Linux の実装は特に遅いし、FreeBSD の実装でも syslog-ng に比べれば遅い。

# FreeBSD の syslogd
irb(main):009:0> puts Benchmark.measure{ 100000.times{|i| Syslog.info("syslog test #{i}") } }
  2.703125   1.039062   3.742188 ( 71.662001)
=> nil
# ports で入れた syslog-ng2
irb(main):010:0> puts Benchmark.measure{ 100000.times{|i| Syslog.info("syslog test #{i}") } }
  1.859375   0.656250   2.515625 ( 34.068396)
=> nil

Linux は手元に無いので出せないけど、別のところでやったときに20倍~40倍程度の差がついた。

原因は fsync() (さすがに毎行 fsync() 打つのはなあ…)。でもソース見てないのでなんとも。(ぉぃ

ちなみに rsyslog はファイルに書く速度は syslog-ng より遅かったけど、DBに直接書けるとかそういうカスタマイズでカバーするところだろう。

てなわけで、ログサーバとかでは syslog-ng 使わない手は無いよな。(逆に言うとそうでもない限りは別にいいか、ともなる) MySQL や Bind のログの書き出しが遅い(せいで全体が遅い)、とかで困った場合も使えるかも。

なんで速いかソースコードを読むのはまたの機会に譲ったりする(ぉぃ)。

Tags:

No responses yet