Locust负载测试(通过阿西河的笔记整理)
Locust 是什么?
-
Locust 是一个比较容易上手的分布式用户负载测试工具。
-
它旨在对网站(或其他系统)进行负载测试,并确定系统可以处理多少个并发用户,Jmeter 也可以处理这种场景,但是个人感觉 Jmeter 在这方面做的不如 Locust 专业。
- Locust 的运行原理是完全基于事件运行的,因此可以在一台计算机上支持数千个并发用户。
Locust 的 特征
- 不需要在 UI 界面上傻乎乎的点击,只需正常的写写代码就可以了。
- Locust 基于协程而不是回调,这样会让您的代码类似于正常的 Python 阻塞代码那样同步执行。
Locust与jmeter、Loadrunner的区别
- Locust完全基本 Python 编程语言,采用 Pure Python 描述测试脚本,并且 HTTP 请求完全基于 Requests 库。除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用 Python 调用对应的库进行请求描述即可.
- LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力。
windows下安装Locust
- dos命令 pip3 install locustio
- 如果无法进行下载 dos命令:pip3 install name-of-file.whl,然后在操作1
安装依赖分析
- 打开 Locust 安装目录下的 setup.py 文件。查看安装要求 install_requires=["gevent>=1.1.2", "flask>=0.10.1", "requests>=2.9.1", "msgpack-python>=0.4.2", "six>=1.10.0", "pyzmq==15.2.0"]
- gevent 是在 Python 中实现协程的一个第三方库。协程,又称微线程(Coroutine)。使用 gevent 可以获得极高的并发性能。
- flask 是 Python 的一个 Web 开发框架。
- Requests 用来做 HTTP 接口测试。
- msgpack-python 是一种快速、紧凑的二进制序列化格式,适用于类似 JSON 的数据。
- six 提供了一些简单的工具用来封装 Python2 和 Python3 之间的差异性。
- pyzmq 如果你打算运行 Locust 分布在多个进程 / 机器,建议你安装 pyzmq。
- 当我们在安装 Locust 时,它会检测我们当前的 Python 环境是否已经安装了这些库,如果没有安装,它会先把这些库一一装上。并且对这些库版本有要求,有些是必须等于某版本,有些是大于某版本。我们也可以事先把这些库全部按要求装好,再安装 Locust 时就会快上许多。