python利用JMeter測試Tornado的多線程
JMeter的簡介
JMeter
是Apache組織開發(fā)的基于Java的壓力測試工具
。用于對軟件做壓力測試,它最初被設(shè)計用于Web應(yīng)用測試,但后來擴展到其他測試領(lǐng)域。 它可以用于測試靜態(tài)和動態(tài)資源,例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對象、數(shù)據(jù)庫、FTP 服務(wù)器, 等等。
JMeter的下載網(wǎng)址為:https://jmeter.apache.org/download_jmeter.cgi,下載前請先確定電腦中安裝了Java,下載完畢后點擊bin文件夾下的"meter.bat"(Windows系統(tǒng))或者"jmeter"可執(zhí)行文件(Unix系統(tǒng))即可,界面如下:
我們將在下面的章節(jié)中學(xué)習(xí)如何使用JMeter,以Tornado的多線程為例。
JMeter使用,以Tornado多進程為例
我們將會以Tornado的多線程為例,描述如何使用JMeter。測試的Tornado多線程的Python代碼如下:
# -*- coding: utf-8 -*- # author: Jclian91 # place: Sanya Hainan # time: 2020-01-08 21:48 import time import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define, options from tornado import gen from tornado.concurrent import run_on_executor from concurrent.futures import ThreadPoolExecutor # 定義端口為9090 define("port", default=9090, help="run on the given port", type=int) # 單線程測試 class SanyaHelloHandler(tornado.web.RequestHandler): # get 函數(shù) def get(self): time.sleep(0.5) self.write('Hello from Sanya!') # 多線程測試 class ShanghaiHelloHandler(tornado.web.RequestHandler): executor = ThreadPoolExecutor(4) @gen.coroutine def get(self): result = yield self.doing() self.write(result) # 使用tornado 線程池 @run_on_executor def doing(self): time.sleep(0.5) return 'Hello from Shanghai!' # 主函數(shù) def server(): # 開啟tornado服務(wù) tornado.options.parse_command_line() # 定義app app = tornado.web.Application( handlers=[(r'/sanya', SanyaHelloHandler), (r'/shanghai', ShanghaiHelloHandler) ], # 網(wǎng)頁路徑控制 ) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) http_server.start() tornado.ioloop.IOLoop.instance().start() server()
對上面的程序做個簡單說面:
- /sanya路徑對應(yīng)SanyaHelloHandler,該HTTP接口為get請求,單線程;
- /shanghai路徑對應(yīng) ShanghaiHelloHandler,該HTTP接口為get請求,用線程池實現(xiàn)多線程,線程數(shù)為4;
啟動上述Python程序,下一步描述如何使用JMeter。
首先新建一個測試計劃(Test Plan),取名為tornao測試,如下:
右擊選擇Add,選擇Threads(Users),再選擇Thread Group,填寫信息如下:
填寫Thread Group的名稱為“tornado單線程測試”,“Number of Threads”為20,表示模擬20個用戶,“Ramp-Up period”為1,表示1秒內(nèi)發(fā)送所有用戶的請求,“Loop Count”為2,表示每個用戶發(fā)送2次請求,因此一共為40次請求。
在“tornado單線程測試”上右擊選擇Add,選擇Sampler,再選擇HTTP Request,填寫信息如下:
該Thread Group用于測試tornado的sanya這個路徑對應(yīng)的HTTP請求。
最后我們添加一下對這個測試的一些監(jiān)控(Listener),用于統(tǒng)計該測試的性能。在“sanya_test”上右擊Add,選擇Listener,依次選擇“View Results Tree”,“Summary Report”,“Aggregate Report”和“Aggregate Graph”,分別代表每次測試結(jié)果,總的測試結(jié)果,聚合測試結(jié)果,聚合測試圖展示。
在“tornado單線程測試上”右擊選擇start,測試結(jié)果如下(只展示Summary Report和Aggregate Graph):
可以發(fā)現(xiàn),該壓力測試下,請求的平均時間為7472毫秒,1秒2.0次請求(TPS)。
我們再以同樣的方式測試shanghai這個接口,測試結(jié)果如下:
可以發(fā)現(xiàn),該壓力測試下,請求的平均時間為1718毫秒,1秒7.7次請求(TPS)。
根據(jù)這次測試,我們也發(fā)現(xiàn)tornao的多線程機制發(fā)揮了作用。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)skywalking的trace模塊過濾和報警(實例代碼)
Skywalking可以對鏈路追蹤到數(shù)據(jù)進行告警規(guī)則配置,例如響應(yīng)時間、響應(yīng)百分比等。發(fā)送警告通過調(diào)用webhook接口完成。webhook接口用戶可以自定義。本文給大家介紹python實現(xiàn)skywalking的trace模塊過濾和報警,感興趣的朋友跟隨小編一起看看吧2021-12-12詳解pandas的外部數(shù)據(jù)導(dǎo)入與常用方法
這篇文章主要介紹了詳解pandas的外部數(shù)據(jù)導(dǎo)入與常用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05python用ConfigObj讀寫配置文件的實現(xiàn)代碼
發(fā)現(xiàn)一個簡單而又強大的讀寫配置文件的lib,個人覺得最大的亮點在于自帶的格式校驗功能,并且支持復(fù)雜的嵌套格式,而且使用起來也相當?shù)暮啽?/div> 2013-03-03通過python模糊匹配算法對兩個excel表格內(nèi)容歸類
這篇文章主要介紹了通過python模糊匹配算法對兩個excel表格內(nèi)容歸類,比如兩個不同的工程項目針對的對象都是A,那么就需要將這兩個工程項目歸類到A當中,可以減少很大一部分工作量,,需要的朋友可以參考下2023-03-03對Python3之進程池與回調(diào)函數(shù)的實例詳解
今天小編就為大家分享一篇對Python3之進程池與回調(diào)函數(shù)的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01最新評論