Locust的学习笔记(一、环境搭建以及初识locust)

个人的推荐是,做接口压力测试的时候使用jmeter,而在进行全链路测试的时候用locust。理由是jmeter虽然是可视化的工具,但是编写完整的交易流程时使用起来并不是很方便,众多控件学习成本也不小,比如参数传递要用采样器,比如从数据库中取一个游标,就要用到JDBC连接和JDBC request和For each三个组件。当交易流程非常复杂,包括很多步骤的时候,jmeter的可读性会比较糟糕。对于一些复杂的操作,比如加解密,jemeter也难以进行可视化的代码编写。

因此,当测试一个完整的交易流程时,用locust的好处还是明显的。由于locust是python语言,遇到难以处理的情况,可以直接修改代码解决。locust的学习成本略高,但编写成本不高。也不会像jemter遇到一些黑盒无法处理的情况。

1.安装

locust的安装没有太多的波折,要求python3.6及以上版本,直接pip就行。

2.调整本机的最大连接数。

各操作系统都有自己的tcp连接数限制,如果不调整,一旦测试的并发数大于本机的限制连接数,测试的时候会出现大量的失败请求。从而影响对压力测试结果的判断。**要有一个意识,当逐步升高压力遇到瓶颈时,先要看看是压力机到了瓶颈还是待测服务器遇到了瓶颈。
不要觉得搞笑,实际测试过程中经常遇到这类问题。**后面可以单独总结一篇。
windows下
TCP客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000 ,也就是说默认情况下,客户端最多可以同时发起3977 个Socket 连接。可以修改如下注册表来调整这个动态端口的范围。
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534

unix下:
修改用户最大文件描述符和最大进程数
查看当前值
ulimit -n # 最大文件数,一般默认为1024个
ulimit -u # 最大进程数,一般为默认60000+
修改值
永久修改
vi /etc/security/limits.conf
修改文件数 * soft nofile 10240 * hard nofile 10240 #
修改进程数 * soft noproc 60000 * hard noproc 60000 #
临时修改 ulimit -n 10240 上面的永久修改方式重启还不会生效,
需要执行者 vi /etc/pam.d/login # 在末尾添加 session required /usr/lib64/security/pam_limits.so #
作用是告诉Linux在用户完成系统登录后,应该调用pam_limits.so来执行limit.conf这个文件 一般来说,只需要修改用户的限制就可以了。

3.创建locust的py文件以及使用命令行启动locust。

先创建一个locust的py文件,py文件的常见类和方法在后面写。先给一个网上的例子,这个例子随便百度都是他。。。。。
请注意目前网上的例子很多都是locust1.0的例子,所以部分类和方法需要按照提示进行修改。
比如下面的例子中,Locust2.0中,HttpLocust就改为了HttpUser:

from locust import HttpUser, TaskSet, between

def login(l):
l.client.post(“/login”, {“username”:“ellen_key”, “password”:“education”})

def logout(l):
l.client.post(“/logout”, {“username”:“ellen_key”, “password”:“education”})

def index(l):
l.client.get(“/”)

def profile(l):
l.client.get(“/profile”)

class UserBehavior(TaskSet):
tasks = {index: 2, profile: 1}

def on_start(self):
    login(self)

def on_stop(self):
    logout(self)

class WebsiteUser(HttpUser):
task_set = UserBehavior
wait_time = between(5.0, 9.0)

启动py脚本:
$locust -f D:\Users\dai__\PycharmProjects\pythonProject\dftesttools\venv\dftestlocust1.py --web-host=“127.0.0.1”
注意:****–web-host="127.0.0.1"不可省,否则默认指定的启动ip是0.0.0.0,则通过浏览器无法启动Locust 调度界面。
在这里插入图片描述
逐步负载模式:
性能测试过程中,从小到大逐渐增加压力,以寻求系统的性能拐点是个常用的办法,jmeter要手改并发数,而locust就提供了很好用的工具可以自动执行。通过参数即可实现逐步负载模式。
–step-load
启用“Step Load–逐步负载”模式, 以监视当用户负载增加时性能指标如何变化。
–step-clients
在“逐步负载”模式下,客户端数量逐步增加。与–step-load一起使用。
–step-time
在“逐步负载”模式下,每个Step的进持续时间,例如(300s,20m,3h,1h30m等)。与–step-load一起使用。

分布式运行Locust:
分布式的主机
$ locust -f locust_files/my_locust_file.py --master
分布式的奴隶机:
$ locust -f locust_files/my_locust_file.py --slave
如果要在多台机器上运行Locust,则在启动从属服务器时还必须指定主服务器主机(在单台计算机上运行Locust时不需要,因为主服务器主机默认为127.0.0.1):
$ locust -f locust_files/my_locust_file.py --slave --master-host=192.168.0.100

能看见Locust启动界面,环境部分也就算没啥问题了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值