1. 程式人生 > >Jmeter壓測Thrift服務接口

Jmeter壓測Thrift服務接口

授權 二次 lib 線程 name 客戶端 b- 運營 設置

此文已由作者夏鵬授權網易雲社區發布。

歡迎訪問網易雲社區,了解更多網易技術產品運營經驗。


Apache Jmeter是基於Java開發的性能測試工具,支持多種協議的測試,包括:Web(HTTP/HTTPS)、SOAP、FTP、Database(JDBC)、LDAP、Mail(POP3/IMAP)、JAVA;還提供了多種性能數據統計報表,使用簡單方便簡直是性能測試中居家旅行殺人越貨之必備;但是~本次性能測試需求是Thrift服務接口,並不在Jmeter支持的協議範圍內,繼續用鐘意的Jmeter完成Thrift服務的接口壓測就需要進行二次開發來實現,以下簡單介紹一下通過Jmeter進行擴展協議二次開發以支持Thrift服務接口的壓測需求的過程。

Thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發。它結合了功能強大的軟件堆棧和代碼生成引擎,以構建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 這些編程語言間無縫結合的、高效的服務。

Thrift也支持Java就好辦了~


1.Java測試代碼編寫

1-1測試項目

rec包是Thrift服務類

ThriftClientTest是測試類

技術分享圖片

1-2引入依賴

技術分享圖片

1-3測試代碼

測試類需要繼承Jmeter的AbstractJavaSamplerClient類,然後重寫以下方法:

①public void setupTest(JavaSamplerContext context);初始化方法,用於初始化性能測試的每個線程,每個線程前都會執行一次。

初始化Thrift客戶端

技術分享圖片

②public Arguments getDefaultParameters();設置入參,已設置的參數會顯示在jmeter GUI的參數列表中。

設置本次測試接口需要參數化的參數user_id

技術分享圖片


③public SampleResult runTest(JavaSamplerContext context);性能測試的線程運行體,測試執行主體,從context中獲取參數,並調用被測方法,完成與服務器的交互。該方法是java Sampler實現的重點,執行次數取決於線程數和循環次數。

設置請求屬性以及具體的調用邏輯

技術分享圖片

sampleStart()開始統計響應時間標記、sampleEnd()結束統計響應時間標記,兩個時間戳之差就是一次java請求的響應時間,單位是ms。

System.out輸出會顯示在啟動JMeter時的命令窗口內,有助於監控結果但過多的輸出會影響性能的準確性。

④public void teardownTest(JavaSamplerContext context);測試結束時調用,每個線程執行一次。setupTest和teardownTest方法不需要時可以不寫。

關閉相關的資源

技術分享圖片

所有重寫方法執行的先後順序為:

getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)


1-4集成到Jmeter

com.netease.rec包和ThriftClientTest測試類分別打成jar、Thrift中的jar包 libthrift-0.9.3.jar, slf4j-api-1.7.12.jar放到apache-jmeter-2.13/lib/ext下


2.Jmeter建立測試計劃

2-1重新啟動Jmeter。新建Thread Group, 在Thread Group下,Thread Group -> Add -> Sampler -> Java Request,在Classname下選擇新做的plugin的類名。

技術分享圖片

2-2最後,配置相應的線程數,循環次數,添加聚合報告就可以進行Thrift服務接口的壓力測試了

技術分享圖片


網易雲免費體驗館,0成本體驗20+款雲產品!

更多網易技術、產品、運營經驗分享請點擊。


相關文章:
【推薦】 使用Phaser開發你的第一個H5遊戲(一)

Jmeter壓測Thrift服務接口