JMeter
是Apache組織開發的基於Java的壓力測試工具
。用於對軟件作壓力測試,它最初被設計用於Web應用測試,但後來擴展到其餘測試領域。 它能夠用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器, 等等。
JMeter的下載網址爲:https://jmeter.apache.org/dow... ,下載前請先肯定電腦中安裝了Java,下載完畢後點擊bin文件夾下的"meter.bat"(Windows系統)或者"jmeter"可執行文件(Unix系統)便可,界面以下:python
咱們將在下面的章節中學習如何使用JMeter,以Tornado的多線程爲例。web
咱們將會以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 函數 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!' # 主函數 def server(): # 開啓tornado服務 tornado.options.parse_command_line() # 定義app app = tornado.web.Application( handlers=[(r'/sanya', SanyaHelloHandler), (r'/shanghai', ShanghaiHelloHandler) ], # 網頁路徑控制 ) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) http_server.start() tornado.ioloop.IOLoop.instance().start() server()
對上面的程序作個簡單說面:apache
啓動上述Python程序,下一步描述如何使用JMeter。
首先新建一個測試計劃(Test Plan),取名爲tornao測試,以下:服務器
右擊選擇Add,選擇Threads(Users),再選擇Thread Group,填寫信息以下:多線程
填寫Thread Group的名稱爲「tornado單線程測試」,「Number of Threads」爲20,表示模擬20個用戶,「Ramp-Up period」爲1,表示1秒內發送全部用戶的請求,「Loop Count」爲2,表示每一個用戶發送2次請求,所以一共爲40次請求。app
在「tornado單線程測試」上右擊選擇Add,選擇Sampler,再選擇HTTP Request,填寫信息以下:函數
該Thread Group用於測試tornado的sanya這個路徑對應的HTTP請求。tornado
最後咱們添加一下對這個測試的一些監控(Listener),用於統計該測試的性能。在「sanya_test」上右擊Add,選擇Listener,依次選擇「View Results Tree」,「Summary Report」,「Aggregate Report」和「Aggregate Graph」,分別表明每次測試結果,總的測試結果,聚合測試結果,聚合測試圖展現。
在「tornado單線程測試上」右擊選擇start,測試結果以下(只展現Summary Report和Aggregate Graph):工具
能夠發現,該壓力測試下,請求的平均時間爲7472毫秒,1秒2.0次請求(TPS)。
咱們再以一樣的方式測試shanghai這個接口,測試結果以下:
能夠發現,該壓力測試下,請求的平均時間爲1718毫秒,1秒7.7次請求(TPS)。
根據此次測試,咱們也發現tornao的多線程機制發揮了做用。
本次分享到此結束,歡迎你們交流~