HTTP2 Sampler for JMeter


今天開發大大說能不能幫忙壓一下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 在速度上的優勢。

 
image.png

 

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插件

 
HTTP/2 Sampler.png

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

 
報錯.png

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


 
image.png

原來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的版本號:

 
image.png

 
我的jdk對應版本.png

 

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


 
image.png

4.修改jmeter.bat文件

在jmeter.bat文件的起始行添加如下代碼:

set JVM_ARGS= -Xbootclasspath/p:D:\apache-jmeter-4.0\lib\ext\alpn-boot-8.1.9.v20160720.jar 
 
image.png

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

 
image.png


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM