たごもりすメモ

コードとかその他の話とか。

ruby 2.0.0-p195 + fluentd v0.10.35 + msgpack v0.5.5 の組合せが素敵という話

fluentd v0.10.35 が出ましたね!

https://rubygems.org/gems/fluentd

で、端的に申し上げまして fluentd をお使いの皆様は以下の組合せで使うのがおススメです。

  • Ruby 2.0.0-p195
  • Fluentd v0.10.35
  • MessagePack v0.5.5

なぜかというと以下のようなすばらしい利点があるからですね。

  1. Ruby 2.0.0 でfluentdを走らせると大変高速
    • 2.0.0 は each とかを回すときに非常に高速になるような改良が入っている
      • 1.9.3 向けには funny-falcon patch として知られていたもの
      • rvm を使ってビルドしていたrubyだと知らずに当たってるかも
    • これが大量のメッセージに対してループが回りつづけるFluentdに超ハマる
      • 手元計測で生の 1.9.3 の倍ちょっと高速
  2. Ruby 2.0.0-p195 はGCまわりの bugfix が入ってて使うに安心
  3. Fluentd v0.10.35 はbugfixや運用系の改善もりもり
    • 特に MessagePack v0.5 系と組合せて使うときのbugfixがあって安心
  4. MessagePack v0.5.5 はメモリに超やさしい
    • このグラフを見れば一目瞭然!
      • fluentdが8プロセス立ち上がってるサーバで、金曜昼に全プロセスを上記構成に変更した




  • 変更前:
    • rvm + ruby 1.9.3-p125
    • fluentd v0.10.33 + msgpack v0.4.7
  • 変更後
    • ruby 2.0.0-p195 (by ruby-build)
    • fluentd v0.10.35*1 + msgpack v0.5.5

CPU usageが変わってないのは元々 falcon patch のあたったrvmなruby 1.9.3だったから。前にruby-buildで入れた 1.9.3 に入れ替えたらCPUを100%使いきってピークタイムにいろいろと崩壊しました。yabai。2.0.0 にしても変わってないのがすばらしいのです。

ということで、みんなこの構成で使うといいと思うよ! td-agent な人はもうすこし待ってましょう。

とはいえ、OSSのコミッタがお薦めするリリースされたばかりのバージョンをいきなり踏みにいくとか逆の立場だったらなかなかしない気もするので冷静になるとアレですね。まあでも、おすすめです。

*1:正確にはリリース前のブランチから自分で rake build してインストール