5

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

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

net/httpデフォルトのいくつかを設定することで、ライブラリのパフォーマンスを改善する方法はありますか?リクエスト固有の修正は必要ありませんが、問題をグローバルに修正するものが必要です。geokit現在のプロジェクトでgemを使用していますがnet/http、使用していることを確認する以外に、内部でリクエストを処理する方法を変更することはできません。また、本番環境(Heroku)でうまく機能していますが、開発が非常に遅いです。

Mac OSXLionでruby1.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秒かかります。

4

3 に答える 3

29

古い問題ですが、最近同じ問題が発生しました。

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

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

これが将来誰かに役立つことを願っています。

于 2014-12-15T13:37:42.420 に答える
2

DNSサーバーの問題でした。google public DNS(8.8.8.8、8.8.4.4)に切り替えました。@Ineuに感謝します。

于 2012-04-14T12:15:09.293 に答える
-1

最終的に私にとって問題を解決したのは、アンチウイルスを無効にすることでした。ノートンセキュリティを持っています

于 2017-04-09T08:25:06.283 に答える