一、简介

Locust是一款使用Python编写的压力测试工具,本篇总结会介绍在实际测试过程中遇到的问题

https://www.locust.io/

使用Locust的原因是因为可以模拟的用户数量可以通过添加硬件来增长,相对于jmeter来说配置更加方便。

二、需求描述

项目采用node+redis+oracle的模式,需要测试出单台服务器的性能瓶颈。

三、实际测试

环境的搭建:服务器上只需要安装好Python2.7及以上的版本,然后通过pip安装locust就完成了搭建。

1、 pip安装(python的包管理工具,没有pip则不能安装第三方库)python有两个主流的包管理工具easy_install.py和pip,easy_install.py是安装python的时候默认安装的,而pip仅以zip文件的形式保存的python目录中,需要我们手动的安装

【命令】:E:\python\Scripts\pip.exe

这里的路径为你安装的python路径,找到安装目录中\Scripts文件夹下pip文件即可安装pip(这里已经安装好了)

2、 gevent库的安装

【命令】: E:\python\Scripts\pip.exe install gevent

3、 flask库的安装

【命令】:E:\python\Scripts\pip.exe install flask

注:如果不知道版本号可以直接安装flask包,系统会安装不同版本的包(不建议使用)

4、 request库的安装

【命令】:E:\python\Scripts\pip.exe install requests==2.18.1

注:安装库的时候若不知道版本号,可以直接输入命令E:\python\Scripts\pip.exe install requests== 从报错信息中查看所有的版本号(建议安装最新的版本)

5、 msgpack-python库的安装

【命令】:E:\python\Scripts\pip.exe install msgpack-python==0.4.8

6、 six库的安装

【命令】:E:\python\Scripts\pip.exe install six==1.11.0

7、 pyzmq库的安装

【命令】:E:\python\Scripts\pip.exe install pyzmq

8、 locust的安装(最后一步)

【命令】:E:\python\Scripts\pip.exe install locustio

E:\Python27\python-2.7.13.msi

脚本编写:根据需求编写好python脚本,放到服务器上如 locust1.py。

脚本运行:通常使用的是主从模式来运行脚本,这样能够方便进程多开。

打开python27目录,输入命令:

cd  /d E:\Python27\locust-master

locust -f locust1.py --master

该命令运行后会生成一个主进程进行管理,主进程只需要一个。

locust -f locu.py --slave

该命令运行后会有一个子进程启动,根据需要可以多次运行就会开启多个子进程,子进程用来模拟用户数量。

如果需要多进程就要打开多个窗口开进程

 

以上命令运行后或默认开启8089 端口,通过浏览器访问本地8089端口就能进入web界进行控制。

访问地址: http://localhost:8089,slave 就是开启的子进程数量。

如果不同的机器,加后缀主机master的IP:

locust -f ../Python27/load_test1.py  --slave   --master-host=*ip

3.用户数量的详细解释

web界面的user 数量表示并发数,也就是每次访问的并发连接数。实践的时候用户数量是300,表示每次访问有300个用户同时访问,吞吐量能达到2000/s,说明在一秒的时间内服务器响应了大约7次,那么300的用户耗费的时间就是140ms左右。

4.用户数量与slvae关系

用户数量是300,slave为3,那么每个slave会平均分配发送的用户量100,与jmerter分布式不一样。

五、最终测试结果

服务器配置:CPU 8核 内存16G  
承受最大业务量900万次请求数,占用内存12G,占用磁盘空间23G。
redis与业务量关系 80万请求数占用1G redis内存
磁盘与业务量关系  80万请求数占用2G 磁盘空间

附录:

locust -f ../locust-master/load_test.py  --master

重新开终端窗口

locust -f ../locust-master/load_test.py  --slave

远程链接阿里云服务器

在Win10系统下使用“WIN+R”组合快捷键打开运行对话框,然后输入“mstsc",点击确定

输入服务器IP

QPS: 每秒钟处理完请求的次数;注意这里是处理完。具体是指发出请求到服务器处理完成功返回结果。可以理解在server中有个counter,每处理一个请求加1,1秒后counter=QPS。

TPS:每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。

并发量:系统能同时处理的请求数

RT:响应时间,处理一次请求所需要的平均处理时间

计算关系:

QPS = 并发量 / 平均响应时间

并发量 = QPS * 平均响应时间

对比:

测试场景:

对比locust的httpLocust库、python2基础库httplib 和python3基础库http.client的效率和压力

测试接口:通过GET获取URL返回值

Slave机配置:单台8核16G

Slave实例:10个

对比结果:httplocust库RPS最大值4K,python2的最大值12K,python3的最大值15K

Jmeter的TPS最大值是34K

locust的使用的更多相关文章

  1. 性能测试工具Locust

    An open source load testing tool. 一个开源性能测试工具. define user behaviour with python code, and swarm your ...

  2. python httprequest, locust

    r = self.client.get("/orders", headers = {"Cookie": self.get_user_cookie(user[0] ...

  3. Python Locust对指定网站“一键压测”

    [本文出自天外归云的博客园] 前篇 前篇:Python Locust性能测试框架实践 本篇 承上——归纳过程 在前篇的基础上,我们可以利用Locust性能测试框架编写python脚本对指定网站或者接口 ...

  4. linux安装locust

    linux安装locust 1. 安装epel扩展源(目的是为了在安装Pip时不出现一堆乱七八糟的错误信息) EPEL(http://fedoraproject.org/wiki/EPEL) 是由 F ...

  5. Python Locust性能测试框架实践

    [本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...

  6. 性能测试框架Locust初学笔记

    Locust初探 Locust是一款类似于Jmeter开源负载测试工具,所不同的是它是用python实现,并支持python脚本. locust提供web ui界面,能够方便用户实时监控脚本运行状态. ...

  7. 初遇locust

    大概有四个月没有用过PYTHON的我. 今天差点都不知道怎么运行了. 说起来真是丢人呐. 幸好还是存留着一点点印象,再加上看了一下以前写的几篇文章, 还是比较快的想起来了.不然真的是要崩溃了. 刚开始 ...

  8. Locust性能测试工具的安装及实际应用

    一.安装Locust 安装Locust之前先安装的库:gevent库:第三方库,gevent为python提供了比较完善的协程支持.使用gevent,可以获得极高的并发性能. pip install ...

  9. Locust性能测试框架,从入门到精通

    1. Locust简介 Locust是使用Python语言编写实现的开源性能测试工具,简洁.轻量.高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力. 主要特点如下: 使用普通的P ...

  10. Locust no-web 模式与参数详解

    读前参考:<性能测试工具Locust > 熟悉 Apache ab 工具的同学都知道,它是没有界面的,通过命令行执行. Locust 同样也提供的命令行运行,好处就是更节省客户端资源. 命 ...

随机推荐

  1. 给你的C/C++学习路线建议

    因为程序员的高工资,吸引了大部人学习编程,但是通过书籍和视频来学习,总是别人推荐一点是一点,那么如何才能系统有效的学习呢?今天就为你来介绍~ C语言是所有学习编程的人都应该首要学习的语言,今天就C语言 ...

  2. fastjson JSONObject简单使用

    工作中用的蛮多的最近整理下,概括地说 通过这个工具可以让一个json在json串,JSONObject,java对象之间进行转化 首先我们先写2个bean来构成一个比较复杂的json串: public ...

  3. 流量控制--6.Classful Queuing Disciplines (qdiscs)

    Classful Queuing Disciplines 可以使用classful qdisc的代理来解锁Linux流量控制的灵活性和控制力.classful qdisc可以附加过滤器,允许将报文重定 ...

  4. 跟随杠精的视角一起来了解Redis的主从复制

    不想弹好吉他的撸铁狗,都不是好的程序猿 虽然说单机的Redis性能很好,也有完备的持久化机制,那如果你的业务体量真的很大,超过了单机能够承载的上限了怎么办?不做任何处理的话Redis挂了怎么办?带着这 ...

  5. houdini 鱼眼相机

    http://mattebb.com/weblog/houdini-fisheye-camera/ 这个网站是有提供一个相机shader的,,如图是方形的,国内的用户,比较多是做球幕的小伙伴,圆形就行 ...

  6. Spring Cloud Alibaba 初体验(五) SkyWalking

    一.下载与运行 本文使用 SkyWalking 7.0.0:https://www.apache.org/dyn/closer.cgi/skywalking/7.0.0/apache-skywalki ...

  7. docker 部署 mongodb 并且开启远程连接

    mongodb 使用 docker 部署 mongodb 拉取镜像 docker pull mongo 可以查看镜像是否下载成功 docker images | grep mongo 应该会有如下的显 ...

  8. Visual Studio 2012 Ultimate旗舰版下载地址与序列号

    (为了方便个人使用转的的别的帖子的内容,原文链接http://wenku.baidu.com/link?url=acL08J8bTNQ4S5Sd3n3oLN5KJTtrfe8hHuP8aUrNscKN ...

  9. moviepy音视频剪辑:视频变换处理与内容相关的变换函数headblur、mask_and/or、mirror_x/y、rotate、painting、scroll介绍

    一.引言 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>介绍了剪辑基类的fl.fl_time.fx方法,在<moviepy音视频剪辑:视频剪辑基类VideoC ...

  10. PyQt(Python+Qt)学习随笔:在父窗口中弹出子窗口无法显现的问题

    在学习和测试PyQt相关部件功能的时候,老猿经常是不同的窗口新建一个类,再新建一个Application来使用这个窗口类进行测试. 为了减少应用框架代码的重复开发,老猿决定采用主窗口叠加测试窗口的模式 ...