locust实现压力测试_ 环境搭建+编写压测脚本

2020-08-21  本文已影响0人  bonnie_xing

说明:locust版本为1.1.1
一共分5个部分进行梳理:

  1. 运行一个简单的demo压测脚本
  2. 修改运行方式:将locust作为第三方库
  3. 对接Prometheus、Grafana实现数据图形化
  4. 从windows调试到linux运行
  5. 压力测试参数的学习

一、 在windows搭建python压测环境

1.1. 安装anaconda

官网直接下载:
https://www.anaconda.com/products/individual
下载后使用默认路径,直接安装就好。无需破解。

image.png

安装完成后,可以实现以下功能 :

1.2. 安装pycharm,并破解

1.2.a. 官网下载 安装

官网直接下载:
https://www.jetbrains.com/pycharm/

image.png
下载后使用默认路径,直接安装。
下载完成后,由于设置了使用时间长度,此时为了更好的使用。需要破解了。

1.2.b. 破解pycharm

最开始,为了省事输入了激活码。具体来源:
https://www.jianshu.com/p/30122b706ac4
可是使用一段时间后,总是提示过期。为了永久解决,尝试破解

永久破解,参考链接
https://www.jianshu.com/p/6359f65b84ba

破解第一步:下载破解补丁(共4步)

链接地址:http://note.youdao.com/s/1BszklvV
下载完成后,把 文件替换到pycharm的安装路径下

image.png
破解第二步:先点击试用(共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

image.png

修改完配置文件之后切记重启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

说明:

此时完成了在windows下,使用locust进行简单的压测。以用户每秒卵化10个用户的方式,卵化100个用户,连续压测。

接下来将介绍命令行实现分阶段压测的方法

2.2. 逐步加载压测

要通过命令行实现分阶段压测,需要在headless的模式下运行。此时:

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/

【说明:】

此时只能在运行的Terminal下看到运行状态


image.png

2.2.b.将locust作为第三方库,在程序中控制执行策略

在后面的第三方库中记录

上一篇下一篇

猜你喜欢

热点阅读