Fluentd の BufferedOutput に、1度に複数の chunk を吐き出すオプションを足すことについて議論

3
そのっつ (Naotoshi Seo) @sonots

fluentd の BufferedOutput が 1 chunk ずつしか flush しない(そのあと、queued_chunk_flush_interval 時間待つ)から、複数 chunk 吐き出すオプションを足そうと思う #fluentd

2014-04-04 17:11:26
SKS rep @repeatedly

@sonots queued_chunk_flush_interval 0じゃダメなの?

2014-04-04 17:18:31
そのっつ (Naotoshi Seo) @sonots

@repeatedly 増やしたいんですが、1回の flush の数を 10 個とかに制限できたほうがいいと思うんですよね。0 だと本気出しすぎてしまう。

2014-04-04 17:20:00
SKS rep @repeatedly

@sonots うーん,なんかそんなに細かな調整が必要な時点で他で流量調整した方がいい気もする

2014-04-04 17:20:42
そのっつ (Naotoshi Seo) @sonots

@repeatedly それに、queued_chunk_flush_interval 0 だと enqueue しちゃいません?

2014-04-04 17:21:29
そのっつ (Naotoshi Seo) @sonots

溜まった分を吐き出したいだけで、chunk size を無視したいわけではないのだ。

2014-04-04 17:22:31
SKS rep @repeatedly

queued_chunk_flush_intervalとかtry_flush_interval弄っている環境の人,http://t.co/BQku0yOBzXに記事寄稿して欲しい所.うちの環境とかだと弄ってないし,アドバンスなユースケースとその効用辺り

2014-04-04 17:23:41
そのっつ (Naotoshi Seo) @sonots

flush_interval もちゃんと設定すればいいのか。この辺ややこしいな

2014-04-04 17:24:02
そのっつ (Naotoshi Seo) @sonots

queued_chunk_flush_interval を 0 にしたら、busy loop になるような気がする

2014-04-04 17:25:37
SKS rep @repeatedly

バッファのflush周り,色々と高負荷環境からの要望取り入れてオプション増やしているけど,多分誰も整理してないので,こういう場合にはこういう設定みたいなのリストアップしていけば,既存の解決出来るケースそれなりにあるんじゃないか疑惑 #何も調べずつぶやいている

2014-04-04 17:26:15
そのっつ (Naotoshi Seo) @sonots

@repeatedly とりあえず queued_chunk_flush_interval 0 だと、busy loop になると思うので、そこは 0.1 ぐらいにしつつ、1度に吐き出す chunk の数を制御できるオプションがあるとゴリゴリデータを吐き出せてよさそうな気がします

2014-04-04 17:28:36
SKS rep @repeatedly

@sonots あれ,0だとbusy loopになるんでしたっけ?

2014-04-04 17:28:57
SKS rep @repeatedly

自分が使ってない機能の所はよく分からん

2014-04-04 17:29:23
そのっつ (Naotoshi Seo) @sonots

@frsyuki @repeatedly queued_chunk_flush_interval 0 だけど、try_flush_interval を 0 にしなければ、データが溜まっていない限りは busy loop にならない、ということですかね

2014-04-04 17:30:54
Sadayuki Furuhashi @frsyuki

@sonots @repeatedly そうですね。ry_flush_intervalも0にするとbusy loopしそうな感じですね。

2014-04-04 17:33:09
Sadayuki Furuhashi @frsyuki

@sonots @repeatedly というよりは、try_flush_intervalが0だとqueued_chunk_flush_intervalに関わらずbusy loopするんでは

2014-04-04 17:33:38
そのっつ (Naotoshi Seo) @sonots

@frsyuki @repeatedly queue に chunk が溜まっていると、次回は queued_chunk_flush_interval 後になります。

2014-04-04 17:35:08
たろー @annin_taro_tofu

@sonots ユースケースに合わないのかもしれませんが、num_threadsで複数チャンクを(ほぼ)同時に流すとかはどうでしょうか?

2014-04-04 17:35:31
そのっつ (Naotoshi Seo) @sonots

@annin_taro_tofu num_threads もいいんですが、connection の数が増えてソケット数頭打ちにぶつかる可能性があります。

2014-04-04 17:36:15
そのっつ (Naotoshi Seo) @sonots

try_flush_itnerval と queued_chunk_flush_interval を両方 0.1 とかにして、1度に吐き出す chunk の最大数制御できたほうがシンプルじゃない?

2014-04-04 17:37:05
tagomoris @tagomoris

@sonots なんかどういうケースを想定しているのかわからないんですけど、しばらく通信が途切れていたケースだとそこそこchunkが溜まってることが想像されるので、あんまり一気に吐き出すのはマズいのでは

2014-04-04 17:38:06
Sadayuki Furuhashi @frsyuki

@sonots 「1度に吐き出すchunkの最大数」というのが意味的に良く分からないのですが、例えばqueued_chunk_flush_intervalを0にすることが可能なのと比べてどういうケースで便利でしょう?

2014-04-04 17:38:37
そのっつ (Naotoshi Seo) @sonots

@tagomoris なので、queued_chunk_flush_interval 0 ではなくて、吐き出す数を 10 個とかに制限したいんですよね

2014-04-04 17:38:43
Sadayuki Furuhashi @frsyuki

@sonots ん? 例えば最大3個まで溜まっているチャンクを書き出したあと、queued_chunk_flush_interval秒間待ちたいということです?

2014-04-04 17:39:27