Net :: HTTP对HTTPS请求的响应非常慢

时间:2015-04-29 13:27:28

标签: ruby ruby-on-rails-4 ssl openssl net-http

出于某种原因,在我的开发机器上,我对通过Net :: HTTP执行的HTTPS请求的响应非常非常慢。我尝试过RestClient和HTTParty,他们都有同样的问题。它似乎无处不在。我已经毫无问题地提出了数百次这些请求,但今天它们的速度令人难以忍受。

pry(main)> puts Time.now; HTTParty.get('https://api.easypost.com/v2/addresses'); puts Time.now;
2015-04-29 08:07:08 -0500
2015-04-29 08:09:39 -0500

如您所见,响应耗时2.5分钟。而且不只是这个EasyPost API URL。我已经尝试过多次SSL请求到我知道可以连接的服务器(https://google.comhttps://weather.com等),它们都会导致相同的行为。此外,我注意到从HTTP重定向到HTTPS的请求也会发生同样的事情。现在,查看一个非ssl请求:

pry(main)> puts Time.now; HTTParty.get('http://lookitsatravis.com'); puts Time.now;
2015-04-29 08:12:22 -0500
2015-04-29 08:12:22 -0500

瞬时。是什么赋予了?我猜这是Ruby和OpenSSL之间的某些配置问题。我重新安装了两个(使用Ruby 2.2.1和OpenSSL 1.0.2a),我正在使用OS X Yosemite 10.10.2来获取它的价值。重新安装了我的所有宝石,但问题仍然存在。我尝试更改我的DNS设置以防万一,但没有骰子。是否有我可以查看的其他任何地方或我可以更改的任何可以解决此问题的配置?

2 个答案:

答案 0 :(得分:5)

问题不是Ruby或OpenSSL或任何上述库。问题是我的MacBook上没有解析IPv6地址。 DNS查找首先返回IPv6地址,因此库试图连接到它,直到它超时,然后它们连接到工作正常的IPv4地址。

为OS X禁用IPv6 Yosemite 10.10.2为我工作。它并不理想,但在我能确定另一种解决方案之前,它确实有效。

networksetup -setv6off "Wi-Fi"

感谢@SteffenUllrich指导我朝这个方向发展。

答案 1 :(得分:-2)

解决了我的问题是禁用防病毒软件