[TOC]
Locust 是基于 Python 语言的一个性能测试库,如果要想使用它来做性能测试必须要先安装 Python 。
## 支持的 Python 版本
Python 2.7, 3.5, 3.6, 3.7, 3.8.
## macOS 安装 Locust
The following is currently the shortest path to installing gevent on OS X using Homebrew.
使用 Homebrew 在 OS X 上安装 gevent 的是最好的方式了
1. Install[Homebrew](https://mxcl.github.com/homebrew/).
2. Install libev (dependency for gevent):
~~~
brew install libev
~~~
然后按照上述说明进行操作。
<br>
<br>
## 增加最大打开文件数的限制
机器上的每个 HTTP 连接都会打开一个新文件(技术上是文件描述符)。
操作系统可能会为可以打开的最大文件数设置一个下限。
如果该限制小于测试中模拟用户的数量,则会发生故障。
将操作系统的默认最大文件数限制增加到大于您要运行的模拟用户数的数量。
如何执行此操作取决于所使用的操作系统。
<br>
<br>
## 安装依赖分析
这里想简单介绍 Locust 都基于了哪些库。打开 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 时就会快上许多。
<br>
<br>
**安装locust后,会自动下载对应的依赖库**
1. **gevent**:gevent是第三方库,通过greenlet实现协程, 当访问网络时,IO操作会消耗很长时间出现等待情况,greenlet会自动切换其他greenlet,直到IO操作完成,再切换回来,保证greenlet始终再运行,而不是再等待
2. **requests**: requests库,http库,实现各种请求,get,post,put,delete, 这边在locust封装后与requests库对应使用
| request | locust |
| --- | --- |
| request.post() | client.post() |
| request.get() | client.get() |
| request.delete() | client.delete() |
| request.put() | client.put() |
3. **psutil**:是一个监控库,监控cpu, 内存,磁盘等
4. **flask**, Flask-BasicAuth: flask web第三方框架,Flask-BasicAuth:权限验证
5. **pyzmq**: 可用于Locust分布运行在多个进程/机器上
![](https://img.kancloud.cn/fa/7e/fa7e909afb058b2f3f8d4cecea08db79_1078x549.png)