本文主要针对服务端,web系统的性能测试。
根据不同的测试目的,性能测试具体细分为多种类型
以此获得系统在多少并发用户,请求数的情况下,平均响应时间,成功失败率等数据。
在定位系统瓶颈时,考虑被测系统 cpu,网络,磁盘,缓存和数据库情况,同时也要关注测试机器的情况。
这里介绍一种开源性能压测软件 locust,纯 python 实现,能实现模拟用户操作场景进行加压,支持单进程和分布式多进程,有一个简单 web ui 查看压测过程,而且开源python,方便自己自定义hack。
pip install locustio
locust --help
pip install pyzmq ## 多进程机器部署需要安装
公司网络限制手动装依赖真是丢.....
注意 : 设置系统文件描述符最大限制 ulimit -n xx
,
每一个http 连接会打开一个文件描述符,确保系统设置满足测试需求。
参看官方文档,简单地写一个测试例子,对一个 oms 进行访问:
#!/usr/bin/env python
# coding=utf-8
import json
from locust import HttpLocust, TaskSet, task
class WebsiteTasks(TaskSet):
def on_start(self):
response = self.client.get("/v1/games?developer=orientlu", catch_response = True)
#print dir(response)
result = json.loads(response.text)
self.gameid = result[0]['gameid']
@task(2)
def get_unit(self):
self.client.get("/v1/games?developer=orientlu&&gameid=%s"%(self.gameid))
@task(1)
def get_game(self):
self.client.get("/v1/games?developer=orientlu")
class WebsiteUser(HttpLocust):
task_set = WebsiteTasks // 指向TasSet类,定义测试行为
host= "http://10.xx.xx.xxx:8099/"
min_wait = 1000
max_wait = 5000
例子中, WebsiteTasks
继承 TaskSet
,定义了测试行为,定义on_start
方法,locust 在模拟用户启动时调用执行一次,诸如执行登录操作等;
定义执行任务,通过@task
修饰,后续跟的数字为调用比重,默认为1,虚拟用户运行期间,按权重随机挑选任务执行,然后根据设置的min_wait/max_wait 区间随机休眠等待,继续执行任务直到终止。
为了方便调试,先在 no-web 模式下执行,看看脚本是否正常,参数信息通过locust -h
查看,可以直接通过 print 打印调试。
$ locust -f locust_test.py --no-web -c 1 -r 1 -t 10
确认脚本没有问题后,通过web模式执行测试,
$ $ locust -f locust_test.py -P 8899
启动web 后台后登录web,设置模拟用户并发数和请求频率,执行测试并查看测试情况
1533635778967.png
后台可见系统 http 连接数正在 rangup 中
1533630815709.png
1533630790693.png
执行压力测试时,可能单个进程或者一台机器无法产生足够的压力,此时需要多进程或者在多台机器上输出压力。不管是多进程模式还是多机模式,都需要先启动一个master,然后在启动多个slaver。
启动 master, master 不输出压力,需要指定 --master
, web 访问端口等参数。
$ locust -f ./locust_test.py --master -P 8899
启动slaver,同一台机器执行多次启动多个进程,多机分布式通过在不同机器上执行命令,需要指定 --slave
和 master 的 ip。
$ locust -f ./locust_test.py --slave --master-host=127.0.0.1
登录 web 后可以查看当前启动的 slaver 数目。
1533636504819.png
基本 locust 上手测试就是如此了。 最后,重点是,他开源啊。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有