locust安装与使用

locust介绍

locust是一款可以用于分布式用户负载测试的工具,可以对网站或其他系统进行负载测试

可以定义每个用户的行为,通过web UI监视过程,可以更方便的看出系统的瓶颈

locust完全基于事件,可以用一台计算机支持数千个用户

测试代码使用python编写,可以自己编写需要测试的页面 与该页面的权重

locust安装

可以使用pip进行安装

pip -V  #可以查看pip的版本,如果没有,进行安装pip

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
python get-pip.py 
#python get-pip.py  将pip关联到python上
#python3 get-pip.py 将pip关联到python3上
#根据需要关联对应的python版本

#Debian 和 Ubuntu 可以用包管理器安装
apt-get install python-pip
#centos等可以进行搜索 查看后选择安装
yum search pip

#pip升级
pip install -U pip

#pip 安装包
pip install ***

pip安装完成后,可以通过pip安装locust

pip install locustio

locust支持python 2.7和3.4以上的版本

locust也可以在windows上进行使用,但是Windows无法进行大规模测试,gevent在Windows上的性能很差

locust --help

如果有输出 locust安装成功

需要修改服务器的最大打开文件数的限制

ulimit -n #查看当前最大文件限制
ulimit -n 65535  #可以临时修改当前进程的最大打开文件数,重启后失效

vim  /etc/security/limits.conf  #在最后添加或修改成下面

root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
#可以永久修改最大打开文件数限制,root代表为root账号的设置
# * 代表对所有用户的限制

使用locust

from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):
    def on_start(self):
        """ on_start is called when a Locust start before any task is scheduled """
        self.login()

    def on_stop(self):
        """ on_stop is called when the TaskSet is stopping """
        self.logout()

    def login(self):
        self.client.post("/login", {"username":"ellen_key", "password":"education"})

    def logout(self):
        self.client.post("/logout", {"username":"ellen_key", "password":"education"})

    @task(2)
    def index(self):
        self.client.get("/")

    @task(1)
    def profile(self):
        self.client.post("/profile")

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    host = "http://example.com"
    min_wait = 5000
    max_wait = 9000

文件名保存为 locustfile.py ,在当前目录运行locust,就可以启动压力测试,默认端口为8089,服务器ip:8089可以打开web页面 进行压力测试

可以运行指定的文件

locust -f locust_files/my_locust_file.py
  • -f filename 使用对应的测试文件运行locust
  • -H | --host 指定运行需要测试的主机域名,不指定或者指定为no将使用测试文件中的host
  • --master 将蝗虫设置为以分布式模式运行,并将此进程设置为主进程
  • --slave 将蝗虫设置为以分布式模式运行,并将此进程设置为从进程
  • --master-host 指定主机 可以设置分布式 主机默认为127.0.0.1 (不同机器配置分布式时,必须指定)
  • --no-web 不使用web界面 直接运行 需要指定以下参数
  • -c |--no-web 模拟的用户数量 (必须)
  • -r | --hatch-rate 设置同时请求数 (必须)
  • -t | --run-time 运行时间 (可选)
  • --print-stats 打印执行状态

编写测试脚本

from locust import Locust, TaskSet, task
class MyTaskSet(TaskSet):
    @task
    def my_task(self):
        print("executing my_task")

class MyLocust(Locust):
    weight = 3
    task_set = MyTaskSet
    min_wait = 5000
    max_wait = 15000
    
class WebUserLocust (Locust):
    weight = 1
    task_set = MyTaskSet
    min_wait = 5000
    max_wait = 15000

#运行两个
locust -f locust_file.py WebUserLocust MyLocust
  • task_set 指定用户行为
  • min_wait 指定用户最小的等待时间
  • max_wait 指定用户最大的等待时间
  • weight num 可以指定运行的权重,数字越大 权重越高,执行的次数也越多
  • @task(num) 可以指定权重,数字越大 权重越高,执行的次数也越多
  • on_start 在用户开始执行该类方法的时候被调用
  • on_stop 在该taskset 停止的时候 方法被调用

运行顺序

  1. Locust setup
  2. TaskSet setup
  3. TaskSet on_start
  4. TaskSet tasks…
  5. TaskSet on_stop
  6. TaskSet teardown
  7. Locust teardown

你可能感兴趣的:(工具,python)