分布式性能测试框架

1 篇文章 0 订阅
1 篇文章 0 订阅

一、目的

  • 机器资源合理配置,资源利用率最大化
  • 更快排查系统瓶颈,提高系统代码质量
  • 性能测试规范化、体系化,快速应对接口性能测试报告
  • 把更多精力放在性能分析上,而非测试脚本开发、数据采集统计上

二、框架

分布式性能测试框架

1、telegraf

  • 定时收集系统和服务的统计数据
  • 采集传统的CPU、内存、网速等传统系统指标
  • 通过其他服务或第三方API采集,如ActiveMQ、Kafka、Consul、Elasticsearch、Kubernetes、Redis
  • 写入influxdb,无需用户关注influxdb表结构、索引等存储格式
  • 官方文档

2、influxdb

  • 时序数据库
  • 监控数据统计存储,高性能地查询与存储时序型数据
  • 与mysql不同之处:
概念MySQLInfluxDB
数据库(同)databasedatabase
表(不同)tablemeasurement
列(不同)columntag(带索引的,非必须)、field(不带索引)、timestamp(唯一主键)
  • 支持HTTP API
# 举个例子:
curl -G 'http://127.0.0.1:8086/query?pretty=true' \
--data-urlencode "db=locust" \
--data-urlencode "q=select last(event) from locust_events where event='test_stop'"
# 返回结果:
{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "locust_events",
                    "columns": [
                        "time",
                        "last"
                    ],
                    "values": [
                        [
                            "2020-07-07T13:41:39.505369Z",
                            "test_stop"
                        ]
                    ]
                }
            ]
        }
    ]
}

3、grafana

  • 度量分析和可视化工具
  • 支持读取多种数据源:InfluxDB,Prometheus,Elasticsearch等等
  • 官方模板hub支持可视化模板在线导入
  • 邮件告警

4、locust

  • 分布式压测工具(库),轻松编写复杂的因果逻辑、完整执行流程,locustfile.py示例如下:
# locust v1.0+版本依赖python3.6
from locust import HttpUser, task, constant

# 如果使用locust v1.0+版本,pip3下载的locust_influx库无法兼容,需要调整注册函数
from locust_influx import expose_metrics

# 注册locust回调函数:记录相关事件到influxdb中
expose_metrics(influx_host="127.0.0.1")

class QuickstartUser(HttpUser):
	# 接口地址
    host = "http://127.0.0.1:9234"
	
	# 单个并发内调用间隔
    wait_time = constant(0)

    #@task
    #def ping(self):
    #    self.client.get("/ping")

    @task
    def sendFile(self):
        with open("/home/zhangsan/file/123", "rb") as f:
            self.client.post("/sendFile",
                    headers={"File-Length": str(fileSize)},
					files={"content": f})
  • 不使用web可视化启动locust
# -u NUM_USERS:用户数,即并发数
# -r HATCH_RATE:孵化率,即压测启动时,以何种速度从0达到设置的并发数
# -t RUN_TIME:运行时间
# “-f locustfile.py”可缺省,默认读取该文件
locust -f locustfile.py -u 10 -r 10 -t 60s --headless
  • 通过web可视化界面,操控locust
# 运行后在127.0.0.1:8089启动web服务,在可视化界面操控压测
locust --web-host 127.0.0.1 --web-port 8089
  • 分布式压测
# master节点,不参与压测,只收集、同步worker节点信息
# 缺省--master-bind-host、--master-bind-port,默认监听0.0.0.0:5557
# --expect-workers:等待两个worker节点加入,即可开始压测
locust -t 60s --headless --master --expect-workers 2

# worker节点,实际做压测的节点
# 缺省--master-host、--master-port,默认连接127.0.0.1:5557
# master、worker没有启动顺序先后要求,都会互相等待
locust --worker -u 8 -r 8 --headless
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值