[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分布運行在多個進程/機器上
