python利用JMeter测试Tornado的多线程
JMeter的简介
JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库、FTP服务器,等等。
JMeter的下载网址为:https://jmeter.apache.org/download_jmeter.cgi,下载前请先确定电脑中安装了Java,下载完毕后点击bin文件夹下的"meter.bat"(Windows系统)或者"jmeter"可执行文件(Unix系统)即可,界面如下:
JMeter使用,以Tornado多进程为例
我们将会以Tornado的多线程为例,描述如何使用JMeter。测试的Tornado多线程的Python代码如下:
#-*-coding:utf-8-*- #author:Jclian91 #place:SanyaHainan #time:2020-01-0821:48 importtime importtornado.httpserver importtornado.ioloop importtornado.options importtornado.web fromtornado.optionsimportdefine,options fromtornadoimportgen fromtornado.concurrentimportrun_on_executor fromconcurrent.futuresimportThreadPoolExecutor #定义端口为9090 define("port",default=9090,help="runonthegivenport",type=int) #单线程测试 classSanyaHelloHandler(tornado.web.RequestHandler): #get函数 defget(self): time.sleep(0.5) self.write('HellofromSanya!') #多线程测试 classShanghaiHelloHandler(tornado.web.RequestHandler): executor=ThreadPoolExecutor(4) @gen.coroutine defget(self): result=yieldself.doing() self.write(result) #使用tornado线程池 @run_on_executor defdoing(self): time.sleep(0.5) return'HellofromShanghai!' #主函数 defserver(): #开启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()
对上面的程序做个简单说面:
- /sanya路径对应SanyaHelloHandler,该HTTP接口为get请求,单线程;
- /shanghai路径对应ShanghaiHelloHandler,该HTTP接口为get请求,用线程池实现多线程,线程数为4;
启动上述Python程序,下一步描述如何使用JMeter。
首先新建一个测试计划(TestPlan),取名为tornao测试,如下:
右击选择Add,选择Threads(Users),再选择ThreadGroup,填写信息如下:
在“tornado单线程测试”上右击选择Add,选择Sampler,再选择HTTPRequest,填写信息如下:
该ThreadGroup用于测试tornado的sanya这个路径对应的HTTP请求。
最后我们添加一下对这个测试的一些监控(Listener),用于统计该测试的性能。在“sanya_test”上右击Add,选择Listener,依次选择“ViewResultsTree”,“SummaryReport”,“AggregateReport”和“AggregateGraph”,分别代表每次测试结果,总的测试结果,聚合测试结果,聚合测试图展示。
在“tornado单线程测试上”右击选择start,测试结果如下(只展示SummaryReport和AggregateGraph):
可以发现,该压力测试下,请求的平均时间为7472毫秒,1秒2.0次请求(TPS)。
我们再以同样的方式测试shanghai这个接口,测试结果如下:
根据这次测试,我们也发现tornao的多线程机制发挥了作用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。