每週讀書與學習是由清華大學出版社出版的《JMeter核心技術、性能測試與性能分析》一書的作者推出,分享作者多年的IT從業經歷,希望對很多計算機科學技術IT類專業畢業生以及IT從業者有所幫助。
1、取樣器
在前面的章節學習中,已經介紹了很多Jmeter源生自帶的取樣器,雖然Jmeter已經有了非常豐富的取樣器,但是性能測試時還是會出現有些場景或者功能無法被覆蓋到或者使用Jmeter中已有的取樣器無法對系統完成性能測試。
1.1、WebSocket取樣器
WebSocket 是一個建立在TCP協議基礎之上的在當前很多Web系統中用的非常頻繁的通信協議,雖然WebSocket 和Http協議很類似,但是Http是單向請求的,只能客户端主動向服務端發送請求,而WebSocket可以在客户端向服務端發送請求的基礎上,也支持服務端向客户端主動發送請求。
如下圖所示,並且WebSocket 支持長連接保持,也就是建立一次連接後,就可以一直使用該連接通道來進行客户端和服務端的長久通信,並且一旦因為網絡等原因連接斷開後,會進行自動重連,並且在HTML5等前端頁面中也大量支持了WebSocket協議,也就意味着瀏覽器與服務器之間除了傳統的Http協議外,也支持了WebSocket協議,比如通過WebSocket協議可以在瀏覽器頁面中進行在線聊天等。

由於WebSocket協議被大量的應用系統使用,並且Jmeter自身並不支持該協議下的取樣器請求,所以在開源社區中,出現了很多自定義實現的支持WebSocket協議的Jmeter取樣器,比如在Github地址:https://github.com/fshutdown/JMeter-WebSocketSampler 中就有一個使用率很廣的WebSocket協議的取樣器,如下圖所示。

該取樣器當前最新的Release版本為1.0.3,可以點擊圖中右側的版本連接,進行下載對應的已經編譯好的Jar包,並且將該Jar包放在Jmeter的lib\ext目錄下,如下圖所示,在前面的章節中,已經介紹過,在Jmeter中,lib\ext目錄下是用來專門放置第三方的Jar包目錄。

將Jar包放置在lib\ext目錄下後,再次啓動Jmeter時,就可以在Jmeter的取樣器下看到新加入的WebSocket 取樣器,如下圖所示。

在添加了WebSocket 取樣器後,可以看到其界面下包含的主要功能如下圖所示。

從圖中可以看到WebSocket 取樣器界面中包含的主要參數如下:
- Web Server Server Name or IP:用於設置WebSocket Server的域名或者IP地址。
- Port Number:用於設置WebSocket Server的端口號,默認為80。
- Connection:用於設置WebSocket 連接的超時時長,單位為毫秒。
- Response:用於設置WebSocket響應的超時時長,單位為毫秒。
- Implementation:用於選擇WebSocket協議的版本,目前只支持RFC6455(v13)。
- Protocol:用於設置WebSocket協議的類似,支持WS和WSS,默認為WS。
- Content encoding:用於設置WebSocket請求內容的字符集,默認為UTF-8。
- Connection Id:用於設置WebSocket的連接Id。
- Path:用於設置WebSocket請求的路徑。
- Ignore SSL certificate errors:設置是否忽略SSL證書錯誤。
- Streaming connection:設置是否為流媒體連接。
- 同請求一起發送參數:用於通過Key/Value鍵值對的形式設置WebSocket的請求參數。
- Request data:用於填寫WebSocket的請求內容。
- Response pattern:用於設置WebSocket的響應模式。
- Close connection pattern:用於設置WebSocket關閉連接的模式。
1.2、Dubbo取樣器
Dubbo是阿里巴巴開源的一個高性能優秀的後端分佈式服務框架,該框架是一款輕量級的高性能的Java RPC(Remote Procedure Call的縮寫,即遠程過程調用)框架,其總體架構設計如下圖所示。

從圖中可以看到Dubbo主要由如下幾個部分組成。
- 服務提供方:通常指Dubbo服務的服務端。
- 服務註冊中心:由於Dubbo服務是分佈式的,存在多個節點,所以在服務啓動時,每個節點會將自己的節點服務註冊到統一的服務註冊中心中。
- 服務監控:主要監控服務消費和服務提供是否正常以及服務的調用量等各項指標。
- 消費方:通常指服務的使用方,服務使用方會先到服務註冊中心中去訂閲需要使用的服務,然後從服務註冊中心中獲取到服務提供方的地址後,再去向服務提供方發送請求,當服務註冊中心的服務發生變更時,服務註冊中心會通知服務的消費方。
由於Dubbo是一個高性能的分佈式服務框架,在很多中小型的公司中被大量使用,所以在開源社區中,也出現了自定義實現的支持Dubbo的Jmeter的取樣器,通過訪問
GitHub網址:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo 即可獲取該取樣器,如下圖所示,該取樣器的最新版本為2.7.8,從GitHub網址中下載最新版的Jar包,放到Jmeter的lib\ext目錄下,然後啓動Jmeter即可看到該取樣器,如下圖所示。
從圖中可以看到Dubbo 取樣器界面中包含的主要參數如下:
- Config Center:用於設置配置中心的地址、超時時長、通訊協議等相關信息。
- Registry Center:用於設置註冊中心的地址、超時時長、通訊協議等相關信息。
- RPC Protocol:用於設置Dubbo中使用的RPC協議。
- Consumer & Service:用於設置服務消費方的相關配置信息,包括超時時長、版本、是否為異步請求、服務負載均衡的方式等。
- Interface:用於設置Dubbo服務端的接口地址、接口調用參數,接口地址支持通過從註冊中心獲取地址或者通過直接輸入填入地址信息。


2、本次學習總結
- 對本次新講解的第三方取樣器有一個瞭解,當遇到需要用第三方取樣器時,知道如何去查找和使用。
3、作者寄語
一、性能測試,真的“過時”了嗎?
最近幾年,隨着大模型、AIGC、智能體等概念的火爆,有人開始質疑:傳統軟件測試,尤其是性能測試,是不是已經“邊緣化”了?
我們的答案是:恰恰相反,它比以往任何時候都更重要。
無論是電商平台的秒殺系統、銀行核心交易鏈路,還是大模型推理服務的API網關,只要涉及高併發、低延遲、穩定性保障,性能測試就是不可繞過的“守門人”。而JMeter,作為開源、靈活、生態成熟的性能測試工具,依然是絕大多數團隊的首選。
但我們也發現:市面上的JMeter資料,要麼是零散的博客教程,要麼是隻講操作不講原理的“説明書”。缺少一本既能系統講透原理,又能手把手帶讀者完成真實項目閉環的實戰型圖書——這正是我們策劃這本書的初心。
二、這本書,到底“核心”在哪裏?
我和張永鬆老師,都是在一線摸爬滾打多年的性能測試專家。我們在寫作時反覆強調一個理念:“性能測試不是點點鼠標,而是工程思維的體現。”
因此,這本書的“核心”體現在三個維度:
1. 從理論到實戰的完整閉環
- 前兩章夯實性能測試基礎:指標、流程、場景設計;
- 中間章節深入JMeter元件體系,連BeanShell腳本、自定義取樣器這種“高階技能”都講透;
- 第9章用一個完整的電商秒殺系統案例,串起需求分析、腳本編寫、壓測執行、瓶頸定位、調優建議、報告撰寫全過程——這幾乎是教科書級的項目復現。
2. 不止於工具,更關注“人”的效率
特別值得一提的是第11章《大模型輔助性能測試》。這不是為了蹭熱點,而是真實探索:如何用AI生成測試腳本、構造複雜測試數據、甚至輔助分析性能瓶頸。我們編輯團隊在審稿時就深受啓發——未來的性能工程師,一定是“工具+AI+經驗”的複合體。
3. 細節控的福音:附錄即手冊
書末附錄整理了JMeter所有關鍵配置項,壓測時隨手翻閲,省去查文檔的時間。這種“為讀者省時間”的細節,在全書隨處可見。
三、我們為什麼堅持“案例驅動”?
在審稿過程中,我們和出版社編輯反覆打磨案例的真實性。比如第9章的秒殺系統,不僅模擬了商品查詢、下單、支付的混合場景,還考慮了緩存擊穿、數據庫鎖競爭、網絡抖動等典型問題。讀者學到的不是“理想化腳本”,而是能直接遷移到工作中的解決方案。
此外,書中所有代碼、配置、截圖均經過實機驗證,配套資源(源碼、PPT、答疑羣)也已上線。我們希望這本書不僅是“讀完就放”,而是能長期放在工位上,邊看邊敲的實戰伴侶。
四、適合誰讀?
- 剛入行的測試工程師:系統建立性能測試知識框架;
- 想進階的JMeter使用者:掌握BeanShell、自定義組件、複雜場景建模;
- 技術經理/架構師:理解性能瓶頸分析與調優思路;
- 高校師生:本書結構清晰、案例完整,適合作為軟件測試課程教材。
最後的話
作為作者,我們深知:一本好書的價值,不在於它講了多少“高深理論”,而在於它能否真正幫讀者解決問題。《JMeter核心技術、性能測試與性能分析》或許沒有炫目的概念,但它紮實、可靠、接地氣——就像性能測試本身一樣,沉默卻關鍵。
如果你正在性能測試的路上摸索,不妨翻開這本書,和兩位作者一起,把“壓測”這件事,做得更專業、更高效、更有價值。
出處:本次學習的內容參考自清華大學出版社出版的《JMeter核心技術、性能測試與性能分析》一書