简介:
locust 是Python实现的一个性能测试工具。
优点:
1. 易用。很方便地基于Python进行脚本扩展和业务请求实现。
2. 完全基于事件驱动,所以不受进程和线程的限制,可以支持发起更高的并发数请求。
3. 可以分布式发起并发请求。
4. 开源。
缺点:
1. 图表相对loadrunner 比较简单。(在Linux 下部署时可以看到图表,在Windows 下没有)
2. 不支持监控被测机,需要结合nmon等工具辅助监控。
版本:
1. 最新版本 0.8a2 : 支持 Python 2.7, 3.3, 3.4, 3.5, and 3.6
2.注意之前的版本不支持Python3,所以安装时请留意选择对应版本。
参考文档:
http://docs.locust.io/en/latest/what-is-locust.html
安装:
1. Python 下安装:pip install locustio 或 pip install locust
2. 如需进行分布式压测,还需要安装pyzmq 模块:pip install pyzmq
3. 命令行中输入 locust -V 检查是否安装成功以及版本是否正确:
安装 2:
在 github 上下载最新版本的源码:
https://github.com/locustio/locust
下载到本地后,解压,命令行进入对应目录后,执行 python3 setup.py install 进行安装。
脚本例子:
locustfile.py
实现举例1 :
实现举例2:
以上两种实现方式的效果是一样的,区别在于后一种方式引入了 task 装饰器来指定每个task 的执行比例,如果新增 task ,添加起来比较方便。
执行:
1. 单机执行:可以有以下3种启动方式:
1.1 在命令行中进入locustfile.py 文件所在目录, 然后执行 locust :
1.2 指定具体脚本:
locust -f 指定的脚本,如下:
1.3 指定被测host 对象:如果脚本中已指定了host,则启动命令可以不需要host 参数
locust -f 指定的脚本 --host=指定服务器,如下:
启动好后,浏览器进入 http://localhost:8089/ 页面(如果是在另一台机上查看,将localhost修改为对应的 ip 地址或主机名即可)可看到对应的操作页面:
Number of users to simulate :并发用户数
Hatch rate (users spawned/second): 每秒新增用户数
例如分别输入100 和 10 , 则从0开始,每秒新增10个新用户进行并发。到达100个用户时,持续进行并发测试,直至手动停止:
停止: 在启动的命令行窗口按 ctrl +c 停止进程。
2. 分布式并发执行:
2.1 首先,需要在每台机器上安装locust,并确保测试脚本已同步到每台机器。
2.2 以其中一台机器作为主机启动(用以管理所有机器和发起请求):
在主机中执行以下命令(是否需要指定host 和 file视个人具体设置而定):
locust -f locust_files/my_locust_file.py --master --host=http://example.com
2.3 在其他机器中作为备机(slave)启动:
locust --slave --master-host=localhost
其中 master-host 为已启动的主机地址,如果是在同一台机器(同一台机器中以新的命令行窗口启动),可以省略该参数:
locust --slave
此时在主机的管理页面可以看到已连接的备机数量。
2.4 发起并发请求:
在管理页面发起请求时,主机会将相关任务分配到对应的备机中执行,主机不负责发起请求。
注意:同一台机器中既可以启动一台主机、多台备机,也可以启动多台备机。
执行效果如下:
报表查看:
(GitHub 上最新的代码才有chart模块,如需使用可下载最新源码进行安装)
图表可以简单看到以下信息:
total requests per second: 每秒发起的请求数
average response time:平均响应时间
number of users: 当前并发用户数
查看失败信息和异常:
可分别在 failures 标签和 exception 标签查看到失败和异常信息:
执行结果可以在 download data 标签点击下载对应表格:
鉴于locust 无法实时对被测机进行监控,建议结合 nmon 进行监控。具体使用方式请参考以下:
http://nmon.sourceforge.net/pmwiki.php
http://phpseyo.iteye.com/blog/1958502