Jmeter壓測Thrift服務接口

此文已由做者夏鵬受權網易雲社區發佈。
java

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


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 這些編程語言間無縫結合的、高效的服務。api

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+款雲產品! 

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


相關文章:
【推薦】 Android事件分發機制淺析(3)

相關文章
相關標籤/搜索