今天開發大大說能不能幫忙壓一下HTTP2的鏈接,便去查了一下相關的東西。
HTTP 2.0 的出現,相比於 HTTP 1.x ,大幅度的提升了 web 性能。在與 HTTP/1.1 完全語義兼容的基礎上,進一步減少了網絡延遲。而對於前端開發人員來說,無疑減少了在前端方面的優化工作。
HTTP/2: the Future of the Internet 這是 Akamai 公司建立的一個官方的演示,用以說明 HTTP/2 相比於之前的 HTTP/1.1 在性能上的大幅度提升。 同時請求 379 張圖片,從Load time 的對比可以看出 HTTP/2 在速度上的優勢。

HTTP1.1 HTTP 2.0主要區別
多路復用
HTTP2.0使用了多路復用的技術,做到同一個連接並發處理多個請求,而且並發請求的數量比HTTP1.1大了好幾個數量級。當然HTTP1.1也可以多建立幾個TCP連接,來支持處理更多並發的請求,但是創建TCP連接本身也是有開銷的。TCP連接有一個預熱和保護的過程,先檢查數據是否傳送成功,一旦成功過,則慢慢加大傳輸速度。因此對應瞬時並發的連接,服務器的響應就會變慢。所以最好能使用一個建立好的連接,並且這個連接可以支持瞬時並發的請求。
關於多路復用,可以參看學習NIO 。
數據壓縮
HTTP1.1不支持header數據的壓縮,HTTP2.0使用HPACK算法對header的數據進行壓縮,這樣數據體積小了,在網絡上傳輸就會更快。
服務器推送
意思是說,當我們對支持HTTP2.0的web server請求數據的時候,服務器會順便把一些客戶端需要的資源一起推送到客戶端,免得客戶端再次創建連接發送請求到服務器端獲取。這種方式非常合適加載靜態資源。服務器端推送的這些資源其實存在客戶端的某處地方,客戶端直接從本地加載這些資源就可以了,不用走網絡,速度自然是快很多的。
好了,閑話少敘,切入正題!
1.下載安裝HTTP/2 Sampler插件

2.重啟jmeter之后,就可以看到相應的Sample和Listener了,但直接使用時,發現如下報錯:

回過頭查看HTTP/2 Sampler.png截圖中的github項目鏈接:

原來Java 8本身不支持HTTP / 2,因此需要確保在系統上具有alpn-boot並編輯JVM_ARGS.
3.下載alpn-boot包
訪問https://www.eclipse.org/jetty/documentation/9.4.x/alpn-chapter.html,查看不同的jdk版本對應的alpn的版本號:


maven倉庫下載對應版本的jar包:

4.修改jmeter.bat文件
在jmeter.bat文件的起始行添加如下代碼:
set JVM_ARGS= -Xbootclasspath/p:D:\apache-jmeter-4.0\lib\ext\alpn-boot-8.1.9.v20160720.jar

5.再次重啟jmeter並運行之前的腳本,就沒問題了

作者:呆呆冬
鏈接:https://www.jianshu.com/p/288da84807b3
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。