python利用JMeter测试Tornado的多线程
(编辑:jimmy 日期: 2024/11/19 浏览:3 次 )
JMeter的简介
"_blank" href="https://jmeter.apache.org/download_jmeter.cgi" rel="external nofollow" >https://jmeter.apache.org/download_jmeter.cgi,下载前请先确定电脑中安装了Java,下载完毕后点击bin文件夹下的"meter.bat"(Windows系统)或者"jmeter"可执行文件(Unix系统)即可,界面如下:
"color: #ff0000">JMeter使用,以Tornado多进程为例
"htmlcode">
# -*- 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()
对上面的程序做个简单说面:
- /sanya路径对应SanyaHelloHandler,该HTTP接口为get请求,单线程;
- /shanghai路径对应 ShanghaiHelloHandler,该HTTP接口为get请求,用线程池实现多线程,线程数为4;
填写Thread Group的名称为“tornado单线程测试”,“Number of Threads”为20,表示模拟20个用户,“Ramp-Up period”为1,表示1秒内发送所有用户的请求,“Loop Count”为2,表示每个用户发送2次请求,因此一共为40次请求。
该Thread Group用于测试tornado的sanya这个路径对应的HTTP请求。
可以发现,该压力测试下,请求的平均时间为1718毫秒,1秒7.7次请求(TPS)。
根据这次测试,我们也发现tornao的多线程机制发挥了作用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇:解决Pytorch 加载训练好的模型 遇到的error问题