2015-04-29 42 views
6

出於某種原因,在我的開發計算機上,我通過Net :: HTTP執行的HTTPS請求的響應非常非常慢。我試過RestClient和HTTParty,它們都有相同的問題。它似乎從不知所云。我已經提出了幾百次這些請求沒有問題,但今天他們無法忍受緩慢。Net :: HTTP對HTTPS請求的響應速度極慢

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設置,以防萬一,但沒有骰子。是否有其他地方我可以看看,或者我可以改變的任何配置可以解決這個問題?

+0

可能是一個網絡問題,即一些中間盒做流量整形。與同一臺機器上的其他軟件一起檢查,看它是否是特定於機器的,或者只發生在紅寶石上。 –

+0

@SteffenUllrich我剛剛檢查過cURL/wget/Postman ...... cURL和Postman的工作很好,但wget不起作用。它具有完全相同的行爲。有趣的是,我注意到wget嘗試首先連接到IPv6地址,失敗。當它連接到IPv4地址時,它立即完成。所以,我認爲問題出在IPv6上...... – lookitsatravis

+0

謝謝@SteffenUllrich - 這是IPv6導致的問題。禁用它解決了這個問題。 – lookitsatravis

回答

5

這個問題不是Ruby或OpenSSL或任何上述庫。問題是IPv6地址沒有在我的MacBook上解析。 DNS查找首先返回IPv6地址,因此這些庫試圖連接到該地址,直到它超時,然後連接到可以正常工作的IPv4地址。

禁用IPv6的OS X優勝美地10.10.2爲我工作。這不是理想的,但直到我可以確定另一個解決方案,它的工作。

networksetup -setv6off "Wi-Fi" 

謝謝@SteffenUllrich指出我在那個方向。

-2

什麼解決了我的問題是禁用防病毒