JMeter介绍JMeter是Apache组织开发的一款基于Java的压力测试工具。用于压力测试软件,最初是为web应用测试而设计的,后来扩展到其他测试领域。它可用于测试静态和动态资源,例如静态文件、Javaservlet、CGI脚本、Java对象、数据库、FTP服务器等。JMeter的下载地址为:https://jmeter.apache.org/dow...,下载前请确保电脑中安装了Java,下载后点击bin文件夹下的“meter.bat”(Windowssystem)或“jmeter”可执行文件(Unix系统),界面如下:接下来的章节我们将以Tornado的多线程为例,学习如何使用JMeter。使用JMeter,以Tornado多进程为例我们将以Tornado多线程为例,介绍如何使用JMeter。测试的Tornado多线程Python代码如下:#-*-coding:utf-8-*-#author:Jclian91#place:SanyaHainan#time:2020-01-0821:48importtimeimporttornado.httpserverimporttornado.ioloopimporttornado.optionsimporttornado.webfromtornado.optionsimportdefine,optionsfromtornadoimportgenfromtornado.concurrentimportrun_on_executorfromconcurrent.futuresimportThreadPoolExecutor#定义端口为9090define("port",default=9090,help="runonthegiventype=int)#单线程测试类SanyaHelloHandler(tornado.web.RequestHandler):#获取函数defget(self):time.sleep(0.5)self.write('HellofromSanya!')#多线程测试类ShanghaiHelloHandler(tornado.web.RequestHandler):executor=ThreadPoolExecutor(4)@gen.coroutinedefget(self):result=yieldself.doing()self.write(result)#使用tornado线程池@run_on_executordefdoing(self)):time.sleep(0.5)return'HellofromShanghai!'#Mainfunctiondefserver():#打开tornado服务tornado.options.parse_command_line()#Defineappapp=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()简单解释一下上面的程序:/sanya路径对应SanyaHelloHandler,HTTP接口为get请求,单线程;/shanghai路径对应ShanghaiHelloHandler,HTTP接口为get请求,使用线程池实现多线程,线程数为4;启动上面的Python程序,接下来介绍如何使用JMeter首先新建一个测试计划(TestPlan),命名为tornaotest,如下:右键选择Add,选择Threads(Users),然后选择ThreadGroup,填写信息如下:ThreadGroup的名称填写为“tornado单线程测试”,“NumberofThreads”为20,表示模拟20个用户,“Ramp-Upperiod”为1,表示1秒内发送完所有用户请求,“LoopCount”为2,表示每个用户发送2次请求,一共40次请求。右击“tornado单线程测试”,选择Add,选择Sampler,然后选择HTTPRequest,填写信息如下:ThisThreadGroup用于测试tornado的sanya路径对应的HTTP请求。最后我们在这个测试中添加一些监听(Listener)来计算测试的性能。在“sanya_test”上右键Add,选择Listener,依次选择“ViewResultsTree”、“SummaryReport”、“AggregateReport”、“AggregateGraph”,分别代表每条测试结果、总测试结果、聚合测试结果分别,聚合测试图显示。右键单击“tornado单线程测试”并选择开始。测试结果如下(只显示SummaryReport和AggregateGraph):可以发现,在本次压力测试下,平均请求时间为7472毫秒,2.0请求/秒(TPS)。我们以同样的方式测试了上海接口,测试结果如下:可以发现,在本次压力测试下,平均请求时间为1718毫秒,7.7请求/秒(TPS)。根据这个测试,我们也发现tornao的多线程机制发挥了作用。本次分享到此结束,欢迎大家交流~
