Net::HTTP 对 HTTPS 请求的响应极其缓慢

Net::HTTP extremely slow responses for HTTPS requests

出于某种原因,在我的开发机器上,我对通过 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。我已尝试向我知道可以连接到的服务器(https://google.com, https://weather.com 等)发出大量 SSL 请求,它们都会导致相同的行为。另外,我注意到从 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 设置以防万一,但没有成功。有没有我可以查看的其他地方或我可以更改的任何配置来解决此问题?

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

为 OS X Yosemite 10.10.2 禁用 IPv6 对我有用。这并不理想,但在我确定另一个解决方案之前,它是可行的。

networksetup -setv6off "Wi-Fi"

感谢@SteffenUllrich 指出我的方向。

为我解决问题的方法是禁用防病毒软件