只因把 https 改成 http,帶寬減少了 70%!
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
起因是一個(gè)高并發(fā)的采集服務(wù)上線后,100m的上行很快就被打滿了。 但是!這個(gè)請(qǐng)求只是一個(gè) GET 請(qǐng)求,同時(shí)并沒有很大的請(qǐng)求體,這是為什么呢? 于是使用 charles 重新抓包后發(fā)現(xiàn),一個(gè) request 的請(qǐng)求居然要占用 1.68kb 的大小! 其中TLS Handshake 就占了 1.27kb。 這種情況下,需要的上行帶寬就是: 也就說明100mbps的上行為何被輕松打滿 TLS Handshake是什么來頭,竟然如此大?首先要知道HTTPS全稱是:HTTP over TLS,每次建立新的TCP連接通常需要進(jìn)行一次完整的TLS Handshake。在握手過程中,客戶端和服務(wù)器需要交換證書、公鑰、加密算法等信息,這些數(shù)據(jù)占用了較多的字節(jié)數(shù)。 TLS Handshake的內(nèi)容主要包括:
這個(gè)過程不僅耗時(shí),還會(huì)消耗帶寬和CPU資源。 因此想到最粗暴的解決方案也比較簡單,就是直接使用 HTTP,省去TLS Handshake的過程,那么自然就不會(huì)有 TLS 的傳輸了。 那么是否真的有效呢?驗(yàn)證一下就知道。 將請(qǐng)求協(xié)議改成 http 后: 可以看到請(qǐng)求頭確實(shí)不包含 TLS Handshake了! 整個(gè)請(qǐng)求只有 0.4kb,節(jié)省了 70% 的大小 目標(biāo)達(dá)成 因此可以說明:在一些不是必須使用 https 的場景下,使用 http 會(huì)更加節(jié)省帶寬。 同時(shí)因?yàn)闇p少了加密的這個(gè)過程,可以觀察到的是,在相同的并發(fā)下,服務(wù)器的負(fù)載有明顯降低。 那么問題來了如果接口必須使用 https那怎么辦呢? 當(dāng)然還有另外一個(gè)解決方案,那就使用使用 通過啟用 Keep-Alive, 對(duì)于高并發(fā)的場景也非常適用。 要注意的是keep-alive 是有超時(shí)時(shí)間的,超過時(shí)間連接會(huì)被關(guān)閉,再次請(qǐng)求需要重新建立鏈接。 Nginx 默認(rèn)的
作者:麥麥麥造 鏈接:https://juejin.cn/post/7409138396792881186 來源:稀土掘金 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 該文章在 2024/9/2 10:38:36 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |