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的多线程机制发挥了做用。
本次分享到此结束,欢迎你们交流~