locust实现压力测试_ 环境搭建+编写压测脚本
说明:locust版本为1.1.1
一共分5个部分进行梳理:
- 运行一个简单的demo压测脚本
- 修改运行方式:将locust作为第三方库
- 对接Prometheus、Grafana实现数据图形化
- 从windows调试到linux运行
- 压力测试参数的学习
一、 在windows搭建python压测环境
1.1. 安装anaconda
官网直接下载:
https://www.anaconda.com/products/individual
下载后使用默认路径,直接安装就好。无需破解。
安装完成后,可以实现以下功能 :
- 自带python的很多第三方库
- 提供python虚拟环境
1.2. 安装pycharm,并破解
1.2.a. 官网下载 安装
官网直接下载:
https://www.jetbrains.com/pycharm/
下载后使用默认路径,直接安装。
下载完成后,由于设置了使用时间长度,此时为了更好的使用。需要破解了。
1.2.b. 破解pycharm
最开始,为了省事输入了激活码。具体来源:
https://www.jianshu.com/p/30122b706ac4
可是使用一段时间后,总是提示过期。为了永久解决,尝试破解
永久破解,参考链接
https://www.jianshu.com/p/6359f65b84ba
破解第一步:下载破解补丁(共4步)
链接地址:http://note.youdao.com/s/1BszklvV
下载完成后,把 文件替换到pycharm的安装路径下
破解第二步:先点击试用(共4步)
如果你是刚下载的pycharm,则需要点击激活窗口的“Evaluate for free”免费试用,然后再创建一个空项目,这样就可以进入到pycharm的工作页面
破解第三步:修改配置文件(共4步)
配置文件修改已经不在bin目录下直接修改,而是通过pycharm修改
进入到项目界面后,点击Pycharm最上面的菜单栏中的 “Help” -> “Edit Custom VM Options …”。
如果提示是否要创建文件,请点”Yes”。
在打开的vmoptions编辑窗口末行添加:-javaagent:你pycharm的安装目录\jetbrains-agent.jar请仔细检查补丁路径是否正确,如果错误则会出现pycharm打不开的情况
-javaagent:C:\Program Files\JetBrains\PyCharm 2020.1.1\lib\jetbrains-agent.jar
修改完配置文件之后切记重启PyCharm软件
破解第四步:输入激活码(共4步)
修改完配置文件之后重启pycharm,点击菜单栏中的 “Help” -> “Register …”
选择Activation code方式激活,复制下面激活码即可!
JQE11SV0BR-eyJsaWNlbnNlSWQiOiJKUUUxMVNWMEJSIiwibGljZW5zZWVOYW1lIjoicGlnNiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IklJIiwiZmFsbGJhY2tEYXRlIjoiMjA4OS0wNy0wNyIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IkFDIiwiZmFsbGJhY2tEYXRlIjoiMjA4OS0wNy0wNyIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IkRQTiIsImZhbGxiYWNrRGF0ZSI6IjIwODktMDctMDciLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJQUyIsImZhbGxiYWNrRGF0ZSI6IjIwODktMDctMDciLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJHTyIsImZhbGxiYWNrRGF0ZSI6IjIwODktMDctMDciLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJETSIsImZhbGxiYWNrRGF0ZSI6IjIwODktMDctMDciLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJDTCIsImZhbGxiYWNrRGF0ZSI6IjIwODktMDctMDciLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJSUzAiLCJmYWxsYmFja0RhdGUiOiIyMDg5LTA3LTA3IiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUkMiLCJmYWxsYmFja0RhdGUiOiIyMDg5LTA3LTA3IiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUkQiLCJmYWxsYmFja0RhdGUiOiIyMDg5LTA3LTA3IiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUEMiLCJmYWxsYmFja0RhdGUiOiIyMDg5LTA3LTA3IiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUk0iLCJmYWxsYmFja0RhdGUiOiIyMDg5LTA3LTA3IiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiV1MiLCJmYWxsYmFja0RhdGUiOiIyMDg5LTA3LTA3IiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiREIiLCJmYWxsYmFja0RhdGUiOiIyMDg5LTA3LTA3IiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiREMiLCJmYWxsYmFja0RhdGUiOiIyMDg5LTA3LTA3IiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUlNVIiwiZmFsbGJhY2tEYXRlIjoiMjA4OS0wNy0wNyIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9XSwiaGFzaCI6IjEyNzk2ODc3LzAiLCJncmFjZVBlcmlvZERheXMiOjcsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-khgsQrnDiglknF0m+yyoYGJXX4vFE3IIVaoMd0bkpfAlMiYM4FUK1JM7uMnVSN0NBC7qtZjYlNzPscEyKE8634uGuY/uToFQnIOCtyUfBxB6j0wF/DcCjhKMNDbnJ1RKZ2VaALuC9B6d6lhtEKm9+urXWTBq7h2VfIBv5wk1Ul9T/m9Dwkz/LccTqnxO0PP288fF13ZbmcLI1/D0dqp/QxYshW6CLR+2Tvk6QCPoaOTKDU/eL1AssD7/mO1g2ZJA+k//8qfRMLgdLmLrMdyiaIhrsM/jJk2qDfTaMcCNylkWXLgKwSvEQG95IhitLN9+GQ4pBW3gOTNl82Gem7jEkA==-MIIElTCCAn2gAwIBAgIBCTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE4MTEwMTEyMjk0NloXDTIwMTEwMjEyMjk0NlowaDELMAkGA1UEBhMCQ1oxDjAMBgNVBAgMBU51c2xlMQ8wDQYDVQQHDAZQcmFndWUxGTAXBgNVBAoMEEpldEJyYWlucyBzLnIuby4xHTAbBgNVBAMMFHByb2QzeS1mcm9tLTIwMTgxMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5ndaik1GD0nyTdqkZgURQZGW+RGxCdBITPXIwpjhhaD0SXGa4XSZBEBoiPdY6XV6pOfUJeyfi9dXsY4MmT0D+sKoST3rSw96xaf9FXPvOjn4prMTdj3Ji3CyQrGWeQU2nzYqFrp1QYNLAbaViHRKuJrYHI6GCvqCbJe0LQ8qqUiVMA9wG/PQwScpNmTF9Kp2Iej+Z5OUxF33zzm+vg/nYV31HLF7fJUAplI/1nM+ZG8K+AXWgYKChtknl3sW9PCQa3a3imPL9GVToUNxc0wcuTil8mqveWcSQCHYxsIaUajWLpFzoO2AhK4mfYBSStAqEjoXRTuj17mo8Q6M2SHOcwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQBonMu8oa3vmNAa4RQP8gPGlX3SQaA3WCRUAj6Zrlk8AesKV1YSkh5D2l+yUk6njysgzfr1bIR5xF8eup5xXc4/G7NtVYRSMvrd6rfQcHOyK5UFJLm+8utmyMIDrZOzLQuTsT8NxFpbCVCfV5wNRu4rChrCuArYVGaKbmp9ymkw1PU6+HoO5i2wU3ikTmRv8IRjrlSStyNzXpnPTwt7bja19ousk56r40SmlmC04GdDHErr0ei2UbjUua5kw71Qn9g02tL9fERI2sSRjQrvPbn9INwRWl5+k05mlKekbtbu2ev2woJFZK4WEXAd/GaAdeZZdumv8T2idDFL7cAirJwcrbfpawPeXr52oKTPnXfi0l5+g9Gnt/wfiXCrPElX6ycTR6iL3GC2VR4jTz6YatT4Ntz59/THOT7NJQhr6AyLkhhJCdkzE2cob/KouVp4ivV7Q3Fc6HX7eepHAAF/DpxwgOrg9smX6coXLgfp0b1RU2u/tUNID04rpNxTMueTtrT8WSskqvaJd3RH8r7cnRj6Y2hltkja82HlpDURDxDTRvv+krbwMr26SB/40BjpMUrDRCeKuiBahC0DCoU/4+ze1l94wVUhdkCfL0GpJrMSCDEK+XEurU18Hb7WT+ThXbkdl6VpFdHsRvqAnhR2g4b+Qzgidmuky5NUZVfEaZqV/g==
点击确认后,可查看pycharm有效期时间变得超级长了Yeah~
image.png
1.2.3. 配置工程中的python环境
1.2.3.a. 选择python版本
一定要选择python3以上的版本,不然不能支持locust1.1版本
选择刚刚安装的anaconda环境
image.png
1.2.3.b. 添加locust包
在pycharm的Terminal下执行安装,运行:
pip install locust
安装默认安装的是最新版本locust1.1.1
安装完成后,可在File--Settings--Project下查看locust版本。
ps:之前通过pycharm的“+”按钮安装过locust,此时安装的是locustio的包,版本是0.14.5.
还是高版本的好用些
image.png
!!!此时完成了初始环境的搭建!!!
二、编写第一个压测脚本
2.1. locust官网的demo运行
查看locust1.1.1的说明文档:
https://docs.locust.io/en/stable/what-is-locust.html
2.1.a. 复制官网的一个demo
import time
from locust import HttpUser, task, between
class QuickstartUser(HttpUser):
wait_time = between(1, 2)
@task
def index_page(self):
self.client.get("/hello")
self.client.get("/world")
@task(3)
def view_item(self):
for item_id in range(10):
self.client.get(f"/item?id={item_id}", name="/item")
time.sleep(1)
def on_start(self):
self.client.post("/login", json={"username":"foo", "password":"bar"})
2.1.b.在pycharm的Terminal下执行命令:
locust -f ./test.py -u 100 -r 10
说明:
- 此时通过locust的命令行方式,启动了locust的执行界面。
- 命令行中指定了用户数User=100、卵化速度=10/s,相关信息会带入到运行界面
-
没有指定host,需要在运行界面配置
运行前.png
设置完参数后,可运行执行
在网页中可实时查看运行结果
运行中.png
简单的趋势图.png
此时完成了在windows下,使用locust进行简单的压测。以用户每秒卵化10个用户的方式,卵化100个用户,连续压测。
接下来将介绍命令行实现分阶段压测的方法
2.2. 逐步加载压测
要通过命令行实现分阶段压测,需要在headless的模式下运行。此时:
- 不能再通过web界面对User、ratio、host进行配置了
- 不能通过页面展示实时的压测数据了
2.2.a.在pycharm的Terminal下执行命令:
locust -f ./test.py --headless -u 100 -r 2 --run-time 1h50m --step-load --step-users 10 --step-time 5m --host https://www.baidu.com/
【说明:】
- 用户数:100
- 卵化速度:2/s
- 运行方式:每隔5min增加10个用户
- 运行时长:1h10min
此时只能在运行的Terminal下看到运行状态
image.png
2.2.b.将locust作为第三方库,在程序中控制执行策略
在后面的第三方库中记录