python利用JMeter测试Tornado的多线程

作者:jclian91 时间:2022-10-15 12:03:26 

JMeter的简介

  JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。

  JMeter的下载网址为:https://jmeter.apache.org/download_jmeter.cgi,下载前请先确定电脑中安装了Java,下载完毕后点击bin文件夹下的"meter.bat"(Windows系统)或者"jmeter"可执行文件(Unix系统)即可,界面如下:

python利用JMeter测试Tornado的多线程

  我们将在下面的章节中学习如何使用JMeter,以Tornado的多线程为例。

JMeter使用,以Tornado多进程为例

  我们将会以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()

对上面的程序做个简单说面:

  • /sanya路径对应SanyaHelloHandler,该HTTP接口为get请求,单线程;

  • /shanghai路径对应 ShanghaiHelloHandler,该HTTP接口为get请求,用线程池实现多线程,线程数为4;

  启动上述Python程序,下一步描述如何使用JMeter。

  首先新建一个测试计划(Test Plan),取名为tornao测试,如下:

python利用JMeter测试Tornado的多线程

  右击选择Add,选择Threads(Users),再选择Thread Group,填写信息如下:

python利用JMeter测试Tornado的多线程

填写Thread Group的名称为“tornado单线程测试”,“Number of Threads”为20,表示模拟20个用户,“Ramp-Up period”为1,表示1秒内发送所有用户的请求,“Loop Count”为2,表示每个用户发送2次请求,因此一共为40次请求。

  在“tornado单线程测试”上右击选择Add,选择Sampler,再选择HTTP Request,填写信息如下:

python利用JMeter测试Tornado的多线程

该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):

python利用JMeter测试Tornado的多线程

python利用JMeter测试Tornado的多线程

  可以发现,该压力测试下,请求的平均时间为7472毫秒,1秒2.0次请求(TPS)。

  我们再以同样的方式测试shanghai这个接口,测试结果如下:

python利用JMeter测试Tornado的多线程

python利用JMeter测试Tornado的多线程

  可以发现,该压力测试下,请求的平均时间为1718毫秒,1秒7.7次请求(TPS)。

  根据这次测试,我们也发现tornao的多线程机制发挥了作用。

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

来源:https://segmentfault.com/a/1190000021556119

标签:JMeter,测试,Tornado,多线程
0
投稿

猜你喜欢

  • pytorch 实现在测试的时候启用dropout

    2022-03-16 18:08:22
  • pydantic进阶用法示例详解

    2022-01-31 07:00:03
  • python常用排序算法的实现代码

    2022-08-21 08:50:00
  • 安装MySQL5.0后出现1607异常的解决办法

    2009-02-26 15:52:00
  • Tensorflow 自定义loss的情况下初始化部分变量方式

    2023-02-26 22:43:39
  • PHP使用GIFEncoder类生成gif动态滚动字幕

    2024-05-08 09:34:46
  • pytorch锁死在dataloader(训练时卡死)

    2023-06-28 02:36:34
  • 纯CSS实现动态提示信息Tooltips

    2008-05-22 11:56:00
  • Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法

    2023-09-04 23:12:41
  • mysql8重置root用户密码的完整步骤

    2024-01-13 16:04:45
  • 使用 Python 实现微信群友统计器的思路详解

    2022-02-04 23:38:08
  • Yahoo! BrowserPlus 介绍

    2008-06-01 16:38:00
  • 一些SQL查询语法参考

    2007-10-14 11:56:00
  • 在Linux命令行终端中使用python的简单方法(推荐)

    2021-10-27 23:29:21
  • Python文件去除注释的方法

    2023-09-02 06:56:17
  • Go语言学习网络编程与Http教程示例

    2024-02-08 10:33:12
  • opencv python 傅里叶变换的使用

    2022-07-27 14:55:03
  • 清空所有表中的数据的存储过程

    2024-01-16 11:00:08
  • python保存网页图片到本地的方法

    2021-05-20 16:15:04
  • MySQL sql_mode修改不生效的原因及解决

    2024-01-25 03:32:48
  • asp之家 网络编程 m.aspxhome.com