前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生压测方案可以一键部署了!

云原生压测方案可以一键部署了!

原创
作者头像
郑超超
修改2020-11-30 17:06:14
2.4K1
修改2020-11-30 17:06:14
举报

分布式Jmeter作为云原生的压测方案,虽然有着功能强大,压测上限高的特点,但是也有部署较为繁琐,结果展示不够形象的问题。为了解决Jmeter的问题,通过结合Jmeter+Grafana+influx+helm打造了一套一键部署且较为易用的云原生压测解决方案。

一、现有压测方案存在的问题

现有的接口压测方案,根据使用方式我这里分为SaaS和LTaaS两大类,这两类的服务优缺点如下:

产品类型

产品代表

优点

缺点

SaaS

PTS、压测大师

UI化界面,简单易用

1、无法在私有网络内

2、使用需要付费

3、无法应对复杂的请求

LTaaS(Load testing as a service)

Jmeter-disbutied、Jmeter-kubernetes、Jmeter-Suite

可以在私有网络内部使用

1、需要自行部署压测服务

可以对应复杂请求,如一些需要通过鉴权的头

2、需要学习Jmeter知识

SaaS类压测服务的特点是简单易用,适用对压测功能性需求不高的同学,只需要简单请求+参数。而LTaaS适合较为复杂的部署场景,比如有些服务在未上线之前,只有在私有化网络可以访问,外网无法连接,或者你需要实现比较复杂的逻辑,比如内嵌代码到请求,这样的话就要采取开源的LTaaS的压测方案。

而LTaaS的方案,如开源社区里面的Jmeter-disbutied和Jmeter-kubernetes,均存在部署步骤复杂,使用较为麻烦的问题,新手上手有一定的难度。于是,为了简化部署和使用,提升压测方案的效率,我们开发了一键部署的压测方案——Jmeter-Suite。

二、如何部署Jmeter-Suite

部署方式1:Helm3部署

安装Helm3(不能用Helm2)

代码语言:javascript
复制
wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
tar -zxvf helm-v3.2.1-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/

Checkout代码

代码语言:javascript
复制
git clone https://github.com/tkestack/charts.git

部署压测集群

代码语言:javascript
复制
helm install test-name incubator/jmeter-suite

部署方式2:TKE市场部署

如果觉得使用Helm部署还是太麻烦的话,你也可以直接在TKE市场直接点部署

三、如何使用Jmeter-Suite

1、启动测试

Checkout代码,打开jmeter-suite目录

代码语言:javascript
复制
git clone https://github.com/tkestack/charts.git
cd jmeter-suite

启动一次测试

代码语言:javascript
复制
sh start_test.sh demo/Test.jmx

2、查看测试结果

如果想查看测试结果,先找到你的机器IP地址

代码语言:javascript
复制
kubectl get node -o wide | grep $(kubectl get pod -o wide | grep grafana | awk '{print $7}') | awk '{print $7}'

然后访问下面地址即可(注意开放入站安全组)

代码语言:javascript
复制
http://机器IP:31221

3、加入Jmeter脚本的Backend Listener

Jmeter脚本的编写参考网上的教程,或者参考https://github.com/tkestack/charts/jmeter-suite/demo/Test.jmx即可。但是需要注意的是,为了能够把测试数据写入influx db,需在每个测试案例的后面,加入后置处理器Backend Listener:

除了application和title,其余均不需要修改。

四、Jmeter-Suite实践

1、用完即走的压测场景

与使用SaaS类的压测服务不一样的是,使用云原生的压测方案,需要自行准备压测用的集群,以便部署压测服务。但是如果长期维护一套集群用于压测,就会让我们的方案的低成本性有了变化。由于我们的方案已经可以做到一键部署,所以可以在需要压测的时候把压测服务部署上去,用完的时候卸载走人即可。

在我们内部建设的TMF日常压测任务当中,就遇到类似的问题,由于集群资源的匮乏,所以每次压测后都需要卸载掉压测服务,释放集群资源

2、压测与持续集成平台结合的场景

虽然Jmeter-suite能够实现一键部署,部署起来非常方便。但是对比PTS等SaaS类服务,Jmeter-Suite还是缺乏界面化操作的能力。为了解决这个问题,在文博会、腾讯云生态大会等项目的压测实践当中,引入了持续集成平台,通过持续集成平台,把压测操作UI化,大大提高执行的效率。我们这里使用了Coding平台结合压测工具,打造了较为易用的压测服务。

五、欢迎使用或加入Jmeter-Suite的开发!

欢迎大家在腾讯云TKE里直接使用该服务,或者使用helm直接部署。也欢迎到项目里面提出意见。

项目地址:https://github.com/tkestack/charts/tree/main/incubator/jmeter-suite

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、现有压测方案存在的问题
  • 二、如何部署Jmeter-Suite
    • 部署方式1:Helm3部署
      • 部署方式2:TKE市场部署
      • 三、如何使用Jmeter-Suite
        • 1、启动测试
          • 2、查看测试结果
            • 3、加入Jmeter脚本的Backend Listener
            • 四、Jmeter-Suite实践
              • 1、用完即走的压测场景
                • 2、压测与持续集成平台结合的场景
                • 五、欢迎使用或加入Jmeter-Suite的开发!
                相关产品与服务
                持续集成
                CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档