So-net無料ブログ作成

Bot 無限wait? (2) [Ruby]

先日の,Trading Botが無限waitに入ってしまう話の続き.

Net::HTTPが怪しいということで調べてみたところ,Net::HTTPで5つあるタイムアウトのうち3つがdefaultでnilになっていることがわかった. (ruby 2.1.5p273を使っています).
p http.continue_timeout     # => nil
p http.keep_alive_timeout   # => 2
p http.open_timeout         # => nil
p http.read_timeout         # => 60
p http.ssl_timeout          # => nil
ちなみに,ruby 2.3.0ではopen_timeoutのdefault値は60に変更になっているようです.

ひとまず,nilになっているところに値をセットして様子を見てみることにします.
タグ:Ruby Bitcoin
にほんブログ村 自転車ブログ ブルベへ
にほんブログ村

Bot 無限ループ? [Ruby]

運用しているTrading Botの動作がときどき変になります.

Processとしては無事に生きているようですが,定期的に出力するはずのログをまったく出力しなくなります.無限ループ,あるいは無限待ちに陥っているように思いますが,どこで止まっているのか見当がつきません.

今日もそういう状態になっていたので調べてみました.
% strace -p 812
Process 812 attached
ppoll([{fd=7, events=POLLIN}], 1, NULL, NULL, 8
うーん,ファイルアクセスで無限ポーリングに陥っているのでしょうか?

調べると,似たような議論を見つけました.(Resolvedに至ったのは10/4です.最近です!)

Timeout時間を指定せずにppollを呼び出しているのがいけないようです.私はMongoDBは使っておらず,直にSocketを使ってはいないのでnet/httpあたりが怪しそうです.

タグ:Ruby Bitcoin
にほんブログ村 自転車ブログ ブルベへ
にほんブログ村