2012-04-11 4 views
2

私は1つのレールプロジェクトと2つのマシンを持っています。 1つはUbuntu 10.04とそれ以外の12.04ベータ版です。私はすべてが正常に動作10.04マシン上で「fb_graph」宝石を使用して、しかしだ、私はHTTPClient :: ConnectTimeoutError 'fb_graph' gemを使用中

私を好き12.04マシンのものに= FbGraph :: User.me(トークン).fetch

を行うとき

私はこれが起こるも、私はそれを解決できるか理由はわかりません

HTTPClient::ConnectTimeoutError: execution expired 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/session.rb:300:in `connect' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/session.rb:300:in `ssl_connect' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/session.rb:739:in `block in connect' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/session.rb:731:in `connect' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/session.rb:594:in `query' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/session.rb:161:in `query' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:1060:in `do_get_block' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:869:in `block in do_request' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:956:in `protect_keep_alive_disconnected' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:868:in `do_request' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:756:in `request' 
from /home/jan/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:661:in `get' 
from /home/jan/.rvm/gems/[email protected]/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:49:in `block in get' 
from /home/jan/.rvm/gems/[email protected]/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:122:in `handle_response' 
from /home/jan/.rvm/gems/[email protected]/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:48:in `get' 
from /home/jan/.rvm/gems/ruby-1.9.2-p29[email protected]/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:18:in `fetch' 
from (irb):10 
from /home/jan/.rvm/gems/[email protected]/gems/railties-3.2.0/lib/rails/commands/console.rb:47:in `start' 
from /home/jan/.rvm/gems/[email protected]/gems/railties-3.2.0/lib/rails/commands/console.rb:8:in `start' 
from /home/jan/.rvm/gems/[email protected]/gems/railties-3.2.0/lib/rails/commands.rb:41:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

を取得します。何か案は?ありがとう!

1月

+0

ここではタイムアウトが発生しています...ソリューションを見つけましたか? – brauliobo

+0

ああ、ipv6の問題で、 'sudo ifconfig eth1 inet6 del'でipを削除しました – brauliobo

答えて

0

HTTP要求がサーバーとFBの間でタイムアウトしています。 HTTPクライアントのタイムアウトオプションを設定する方法については、github issueを参照してください。

1

マシンのハードウェアパフォーマンスとネットワークパフォーマンスが原因となっている可能性があります。

もう一度数回お試しください。ネットワークがルーティング情報を読み込むための時間を必要とすることもありますが、ロードされると次回は高速になります。それは良いプロダクションソリューションではないかもしれませんが、問題がネットワークルーティングを改善しているかどうかを診断することができます。

これは真のネットワークパフォーマンスの問題です。あなたのネットワークを調整できない場合、それはあなたを助けないかもしれません。

再試行が役立つ場合は、コードの周りに再試行ループを置くことができます。

(0..2).each do 
    begin 
    ... #your code goes here 
    break 
    rescue HTTPClient::ConnectTimeoutError 
    end 
end 
+0

また、時折、完全にネットワークがタイムアウトに失敗することに注意してください。つまり、あなたはここからそこに着くことはできません、タイムアウトを与えるかもしれません。タイムアウトが発生しているホストからサーバーにpingを実行できることを確認してください。 –

+0

ここにタイムアウトが発生しています... – brauliobo

+0

私が与えたコードは、タイムアウトの解決策ではなく、むしろ再試行を行う方法です。オペレーションには問題がありましたので、リトライを追加することは私が提案したものです。 接続が確立されていないため、タイムアウトが発生した場合は処理されません。これは正当なタイムアウトとなり、問題は他の場所で解決する必要があります。 –

関連する問題