出於某種原因,在我的開發計算機上,我通過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.com,https://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設置,以防萬一,但沒有骰子。是否有其他地方我可以看看,或者我可以改變的任何配置可以解決這個問題?
可能是一個網絡問題,即一些中間盒做流量整形。與同一臺機器上的其他軟件一起檢查,看它是否是特定於機器的,或者只發生在紅寶石上。 –
@SteffenUllrich我剛剛檢查過cURL/wget/Postman ...... cURL和Postman的工作很好,但wget不起作用。它具有完全相同的行爲。有趣的是,我注意到wget嘗試首先連接到IPv6地址,失敗。當它連接到IPv4地址時,它立即完成。所以,我認爲問題出在IPv6上...... – lookitsatravis
謝謝@SteffenUllrich - 這是IPv6導致的問題。禁用它解決了這個問題。 – lookitsatravis