ruby net/http开放连接很慢

Mil*_*vic 4 ruby net-http

当我net/http在开发中工作时,它非常慢.我已经安装了net-http-spygem以获取有关每个请求的一些信息,我发现"打开连接"部分占用的时间最多(超过10秒).此外,它不会使连接保持活动状态,因此需要在每次请求时重新打开它.

opening connection to maps.google.com...
# ~10 seconds
opened
Run Code Online (Sandbox Code Playgroud)

有什么方法可以net/http通过设置一些默认值来以某种方式提高库的性能?我不想要一个特定于请求的修复,但是需要一些可以解决全局问题的方法.我正在使用geokitgem在curent项目中,我不能改变它在内部处理请求的方式,除了知道它正在使用net/http,并且它在生产(Heroku)上工作得很好但在开发中非常慢.

我在Mac OS X Lion上使用ruby 1.9.2-p290.使用rbenv安装和管理Ruby.


以下是示例代码:

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)
Run Code Online (Sandbox Code Playgroud)

我放在哪里的URL并不重要.每个请求总是需要10秒钟.

Cup*_*ils 21

老问题,但我最近遇到了同样的问题.

某些版本的libc解决DNS路由似乎存在问题.花了几个小时来搜索解决方案后,您只需要require 'resolv-replace'在代码的开头添加.

更多信息:https://github.com/ruby/ruby/pull/597#issuecomment-40507119

希望这能帮助将来的某个人.


Mil*_*vic 2

这是 DNS 服务器的问题。切换到谷歌公共DNS(8.8.8.8、8.8.4.4)。谢谢@Ineu。