2012-03-30 17 views
1

開発中のnet/httpで作業していると非常に遅いです。私はnet-http-spy gemをインストールして各リクエストについての情報を得ました。「接続を開く」の部分が最も時間がかかります(10秒以上)。さらに、接続を維持しているわけではないので、要求ごとにそれを再度開く必要があります。ruby​​ net/httpの接続が非常に遅い

opening connection to maps.google.com... 
# ~10 seconds 
opened 

私は何とか設定のデフォルト値の一部でnet/httpライブラリのパフォーマンスを改善できる方法はありますか?リクエスト固有の修正は必要ありませんが、問題をグローバルに修正するものがあります。私はgeokit gureをcurentプロジェクトで使用しています。私は、それがnet/httpを使用していることを知っている以外は、リクエストを内部的に処理する方法を変更することができず、プロダクション(Heroku)

私はMac OS X Lionでruby 1.9.2-p290を使用しています。 Rubyはrbenvでインストールおよび管理されます。ここで


はサンプルコードです:

require 'net/http' 
require 'uri' 

time = Time.now.to_i 
uri = URI.parse("http://maps.google.com/maps/geo?q=Chicago&output=xml&oe=utf-8") 

Net::HTTP.get(uri) 
puts (Time.now.to_i - time) 

Net::HTTP.get(uri) 
puts (Time.now.to_i - time) 

それは本当に問題で、私はそこに入れてどのようなURLません。各要求に対して常に正確に10秒かかる。

+0

私たちはコードなしでコードの問題を診断することはできません。 Net :: HTTPでは、マシンが非常に負荷がかかっていないか、または接続先のホストが応答が遅い場合を除き、接続を正常に開くのに10秒かかることはありません。 –

+0

サンプルコードを追加しました。本当に私が要求するリモートURLか、マシンが過負荷になっているかどうかは関係ありません。要求ごとに常に正確に10秒かかります。これは本当に奇妙です。 –

+2

名前の代わりにIPアドレスを使用してみてください。問題が解決しない場合は、dns serverで問題が発生しています。 – Ineu

答えて

2

これはDNSサーバーの問題であった。 googleパブリックDNS(8.8.8.8、8.8.4.4)に切り替えました。ありがとう@イヌー。

13

古い問題ですが、私は最近同じ問題を抱えていました。

DNSルートを解決する特定のバージョンのlibcに問題があるようです。検索ソリューションに数時間を費やした後、コードの先頭にrequire 'resolv-replace'を追加するだけです。

詳細情報:https://github.com/ruby/ruby/pull/597#issuecomment-40507119

・ホープ将来的にこのヘルプ誰か。

+0

あなたはこれが将来誰かを助けることができると期待していました...その日が到来しました。 :Dこれは魅力的だった。ヒントをありがとう! –

-1

最終的に私の問題を解決するのは、ウイルス対策を無効にすることでした。私はNorton Securityを持っています