写在前面:此文章在通过学习、实践网络资料写成,相关链接在文章结尾。
一、简介
1、locust是一种可用python编写脚本的开源压测工具(实质是由python下的一些库构成),可定义用户行为,模拟并发访问,从而观测系统的性能与瓶颈。
2、特点:
(1)完全基于python,且http请求完全基于Requests库;除了http/https协议,locust也可测试其他协议的系统,只需采用python调用对应的库进行请求描述即可;
(2)locust的并发机制摒弃了进程和线程,采用协程(gevent)机制,避免了系统级资源调度,可大幅提高单机的并发能力。
3、依赖的第三方的库:(在https://github.com/locustio/l... 中的setup.py下查看:install_requires=["gevent>=1.2.2", "flask>=0.10.1", "requests>=2.9.1", "msgpack-python>=0.4.2", "six>=1.10.0", "pyzmq>=16.0.2"])
(1)gevent是python中实现协程(微线程)的一个第三方库;
(2)flask是python的一个web开发框架;
(3)requests接口库是python下可用来做http接口测试的库;
(4)msgpack-python是一种快速紧凑二进制序列化结果,适用于类似json的数据;
(5)six:提供一些简单工具来封装python2和python3之间的差异;
(6)pyzmq:如果打算运行locust分布在多个进程/机器,最后安装此库。
二、安装(*)
1、安装locust
locust可以通过python的pip命令安装,因为我使用的是Mac,它是自带python的,但并不含pip,所以还需下载pip包。打开终端,执行以下步骤:
a、安装easy_install:
curl https://bootstrap.pypa.io/ez_... -o - | sudo python
b、安装pip:
sudo easy_install pip(若不成功可尝试sudo easy_install-3.6 pip 或者sudo easy_install-2.7 pip),执行后再输入电脑密码(不可见)再回车确认即可;
c、安装locust:
方法一:pip install locustio
方法二(推荐python3使用):从GitHub项目地址:https://github.com/locustio/l...
下载项目,在终端下来到项目路径,执行:python setup.py install
d、验证是否安装成功:locust --help
e、如果未来可能运行Locust 分布在多个进程/机器,建议安装pyzmq:pip install pyzmq
2、补充(待学习)
(1)如果使用的Mac,其实不建议用其自带的python,因为一旦将python折腾崩溃,将可能影响到系统。解决办法是安装homebrew(https://brew.sh),在终端中输入:brew install python,还可指定python的版本,需要将此版本python的环境变量设置在系统自带python的环境变量之前,且此方法安装的python中将含有pip。
(2)可使用python的包管理工具anaconda。
三、实践——一个简单的脚本与测试
1、创建load_test.py文件,内容为:
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
@task(1)
def baidu(self):
self.client.get("/")
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 3000
max_wait = 6000
2、在终端中来到load_test.py所在目录下,输入:
locust -f load_test.py --host=https://www.baidu.com
若正常运行则将看到:
[2017-11-28 17:39:47,262] appledeMacBook-Air-3.local/INFO/locust.main: Starting web monitor at :8089
[2017-11-28 17:39:47,263] appledeMacBook-Air-3.local/INFO/locust.main: Starting Locust 0.8.1*
3、打开浏览器访问:http://127.0.0.1:8089
(1)设置模拟用户数和每秒产生用户数,然后点击Start swarming 开始运行性能测试。
(2)页面数据说明——statistics:
<性能测试参数>
Type: 请求的类型,例如GET/POST。
Name:请求的路径。这里为百度首页,即:https://www.baidu.com/
request:当前请求的数量。
fails:当前请求失败的数量。
Median:中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值。
Average:平均值,单位毫秒,所有请求的平均响应时间。
Min:请求的最小服务器响应时间,单位毫秒。
Max:请求的最大服务器响应时间,单位毫秒。
Content Size:单个请求的大小,单位字节。
reqs/sec:是每秒钟请求的个数。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。