时间:2021-05-23
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的多线程为例。
JMeter使用,以Tornado多进程为例
我们将会以Tornado的多线程为例,描述如何使用JMeter。测试的Tornado多线程的Python代码如下:
# -*- coding: utf-8 -*-# author: Jclian91# place: Sanya Hainan# time: 2020-01-08 21:48import timeimport tornado.httpserverimport tornado.ioloopimport tornado.optionsimport tornado.webfrom tornado.options import define, optionsfrom tornado import genfrom tornado.concurrent import run_on_executorfrom concurrent.futures import ThreadPoolExecutor# 定义端口为9090define("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()对上面的程序做个简单说面:
启动上述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次请求。
在“tornado单线程测试”上右击选择Add,选择Sampler,再选择HTTP Request,填写信息如下:
该Thread Group用于测试tornado的sanya这个路径对应的HTTP请求。
最后我们添加一下对这个测试的一些监控(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的多线程机制发挥了作用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Python里的多线程是假的多线程,不管有多少核,同一时间只能在一个核中进行操作!利用Python的多线程,只是利用CPU上下文切换的优势,看上去像是并发,其实
Jmeter的线程组之间是独立的,用Jmeter做接口测试或者是性能测试时,经常会涉及到多个线程组。那么如何将A线程组返回的变量信息提取后,传递给B,C线程组使
多线程概述多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率。python提供了两个模块来实现多线程thread和thread
工程做好之后,需要对接口进行压力测试。可以自己编写线程池模拟多用户访问测试,也可以使用jmeter进行压测。jmeter的好处是测试方便,并且有完善的结果分析功
前面已经演示了Python:使用threading模块实现多线程编程二两种方式起线程和Python:使用threading模块实现多线程编程三threading