fluentd がちゃんと死なない問題いい加減ちゃんと調べようと思って、https://t.co/oClScvtrVy ここでブロックしていることがわかったのだが、さてさてどう直したものか #今ココ
2014-01-29 18:12:02# FIXME @thread.join blocks without this line で一体なにがあったのかがわからないから、どう直したらいいのか不明だ #fluentd
2014-01-29 18:16:11@sonots そこは @frsyuki に聴いてくだしあ.in / out_forwardのコアは初期からほとんど変わってないので,その辺のアドホックな問題は大抵frsyuki案件
2014-01-29 18:16:52@sonots それはイベント駆動IOライブラリではループを正しく止めるのが難しいという良くある問題で、そこではlistenしているソケットにconnectして中断させる方法をとっています。 @repeatedly
2014-01-30 06:40:19@sonots 良くある解決策は、a)pipeを事前に食わせておいて終了時に1バイト書き込んで中断させる方法 b)イベントループは1秒ごとに自動的に中断して終了フラグを読み出すようにしておく方法です。 @repeatedly
2014-01-30 06:41:29@sonots それぞれ一長一短があり、a)ではファイルディスクリプタ数が無駄に増える、b)では止まるまでに時間がかかる。特にFluentdの場合イベント駆動IOループを使うプラグインの数(actorのインスタンス数)が多くなるので問題が大きめです。 @repeatedly
2014-01-30 06:42:54@sonots しかしそこが問題だったとなると困りますね…Coolioを使っていると既存のAPI的にb)はできないので、a)でひとまず直せるでしょうか? @repeatedly
2014-01-30 06:46:11@sonots 根本的な解決策としては、1)Coolio::Loop#run_onceがtimeout引数を取れるようにしb)を実装する、2) timeout間隔を0.5秒ぐらいにしておく、というのでどうでしょう?>@repeatedly
2014-01-30 06:48:44@sonots Loop#runは、while true; run_once; break if stopped? に置き換える必要があります。蛇足ですがActorを入れたい理由の一つのは、その問題をプラグインがいちいち考えるべきでは無いからです。@repeatedly
2014-01-30 06:50:08@frsyuki @repeatedly なるほど、ちょっと見てみます。 #Coolio全然追ってないんだよな〜...
2014-01-30 10:29:23fluentd が死なない問題また起こったけど、今度は out_yohoushi というか httpclient の TCPSocket.new の行で固まってる。まえは in_forward の TCPSocket.new https://t.co/G8Y1ex4SrE
2014-01-31 15:59:54@sonots なるほど。これですね:https://t.co/TAjoiBUAov sigdump便利ですね
2014-01-31 16:00:01とりあえず今は timeout(5) { TCPSocket.new .... } とかやっちゃえばいいのかな
2014-01-31 16:02:18@sonots それは微妙なんで、SocketUtil.create_tcp_socket(host, port, options={}) みたいなのを実装して、そこのチケットにある Errno::EINPROGRESS を使う方法を実装できないですかね?
2014-01-31 16:03:34くっそ、timeout 実装した SocketUtil#create_tcp_socket でも結局固まった > https://t.co/UiSV5hm3aV
2014-02-04 12:29:30@sonots pack_sockaddr_inは名前解決ぽいですねぇ。タイムアウトつきの名前解決はこの辺りにあるかも:http://t.co/0KF8YyrY0M
2014-02-04 12:32:50@frsyuki @sonots in_forwardのheartbeatでも名前解決で固まってた事例ありませんでしたっけ(再現率極小)?straceの結果からするとUDPのreceiveで固まっていたような記憶がありますが、@repeatedly先生が詳しくしっているかも。
2014-02-04 12:43:26@komamitsu_tw @sonots @repeatedly UDPのreceiveでは名前解決しないようにオプションがセットしてあったような。これ:https://t.co/3qzxDPRx0W
2014-02-04 12:44:23