
我在使用 SSL 256 位元憑證的 Apache 伺服器速度較慢時遇到問題
ab -n 500 https://example.com/
Time per request 29 ms
ab -n 500 http://example.com/
Time per request 10 ms
兩個請求均發送 52 字節,測試是從同一資料中心的伺服器完成的
會議
SSLEngine on
SSLProtocol All -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!RC4:+HIGH:+MEDIUM
SSL 比普通 HTTP 請求慢 3 倍,這正常嗎?
答案1
您如何對伺服器進行基準測試?您的 HTTPS 伺服器後面正在運行什麼應用程式?您的伺服器使用什麼CPU?你怎麼看,你的問題缺乏很多重要的細節...
無論如何,SSL 肯定比「純」HTTP 慢一些:公鑰加密比對稱金鑰加密慢得多,這就是為什麼 pubkey 僅用於交換私有對稱金鑰以及切換到對稱金鑰的通道的原因金鑰加密。
答案2
HTTPS 速度較慢,因為它需要交換更多資料(來自伺服器的 X.509 憑證),需要建立安全資料連接,...
ab
可以給“連接”時間,這就是您會看到時間差異的地方。 TLS 設定比不設定花費更多時間。
答案3
您需要認識到ab
瀏覽器所做的事情和瀏覽器所做的事情之間的差異。 (我不會回答什麼ab
,因為我對此還不夠熟悉)。
例如:
- 使用 TLS 會話是否
ab
重複使用?瀏覽器會因此而執行得更快(對於後續請求)。您可以使用wireshark驗證這一點(也許https://ask.wireshark.org/questions/9007/ssl-session-reuse很有用) - 正在
ab
使用已知速度較慢的密碼(您可以在 ssl_request_log 中查看協商的密碼) - 您是否支援 HTTPS 連線上的 HTTP keep-alive?您應該這樣做,即使只是足夠長的時間來提取頁面上的所有資源。這確實會減少向伺服器發出的 SSL/TLS 請求的數量。
- 您的網站上是否有適合快取的內容(尤其是瀏覽器快取)—您是否使用回應標頭,例如
Cache-Control: public, max-age=3600, s-max-age=3600
.
如果您專注於這些,那麼您可以輕鬆地使僅使用 HTTPS 的網站運作良好且快速。這就是我為(實際上)僅使用 HTTPS 的視訊串流網站所做的事情,而且我不必擔心 SSL 連接時間。
答案4
網站速度變慢的原因:
SSL 憑證攜帶多個中間證書,這些中間證書會增加握手期間的資料量。
OCSP 和 CRL 效能也未修正,因為網站需要 1/3 秒的時間來回覆 OCSP 請求並建立連線。
快速 HTTPS 連線的建議:
可以透過壓縮文字內容來減輕CPU資源的使用率,或是升級目前進程來處理加密任務。
您需要確保頁面上的所有內容都是透過 HTTPS 檢索的。
尋求協助SPDY- Google 的開源網路協議,可最大限度地減少網頁載入時間。
在憑證授權單位方面,CA 可以減少 OCSP 和 CRL 回應時間從 300ms 到 100ms(毫秒)。
CA 可以減少 SSL 憑證中的中間鏈大小,因為它會消耗額外的位元組和時間。