前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【操作指南】FAQ

【操作指南】FAQ

原创
作者头像
杨珂
修改2021-08-04 02:43:46
2K0
修改2021-08-04 02:43:46
举报

【如果数据库满了,可以使用如下两条命令清理】

kubectl exec -it jmeter-influxdb-0 -- rm -rf /var/lib/influxdb/data

kubectl delete pod jmeter-influxdb-0

 PS:如果你使用的不是我们的Jmeter-Suite工具,pod的名字会稍有不同,把“jmeter-influxdb-0”改成你的influxDB的pod的名字即可。

【grafana下方的Individual Transaction没有数据】

具体表现如下:

如下:后端监听器的summaryOnly要改成false

【grafana下方的Individual Transaction 面板有红色感叹号】

解决方式:把HTTP请求中名称中的斜杠去掉

【怎么在腾讯云账号上登录压测集群的Pod】

1.首先在“容器服务”里面找到压测集群

2.进入到“工作负载”界面,点击Deployment,选择***-distributed-jmeter-server

3.从pod列表里面任选一个,点击“远程登录”即可

【如何在jmeter配置阶梯摸高压测】

方案1:使用JMeterPlugins-Standard插件

  •  需要在https://jmeter-plugins.org/downloads/old/中下载对应的JMeterPlugins-Standard,一般下载最新版本即可,下载完成后,解压zip包,把JMeterPlugins-Standard.jar包放到Jmeter的lib/ext目录下
  • 测试计划 - 添加 - 线程(用户)- Stepping Thread Group
  • 效果如下

方案2:使用bzm

https://blog.csdn.net/u014150715/article/details/103235531

【grafana看板的transaction显示为None】

解决方法:summaryOnly要为false,testTitle要有内容

【如何在jmeter配置host访问】

压测过程中,经常需要用IP+host的方式来访问,比如要压测中间链路的某个云组件。在分布式集群上修改host文件比较麻烦,更好的方式是在jmeter脚本里面修改,简单快捷。

  • 在【http信息头管理器】配置host
  • 在【HTTP请求】配置相应的IP

【如何以轮询的方式访问不同的参数(如session/token/ip)】

如果参数数量有限,可以使用 【添加】->【前置处理器】->【用户参数】

PS:线程数要超过用户数量才会被轮询到

如果参数数量很多,可以写到一个csv文件里面,然后在jmeter脚本读取该文件,【添加】-> 【配置元件】->【CSV数据文件设置】

PS: 脚本中CSV 数据文件设置的文件名,需要设置成压测执行机上的固定目录/jmeter 下的文件,即测试依赖的文件路径为:/jmter/文件名,例如:/jmter/token.csv

还需要把该csv文件上传到压测集群上,需要再coding平台上操作。需要确保配置的集群是你的目标压测集群。

当然有时候也是需要随机访问,比如如下的场景。

后台服务都是由多台机器提供支撑。如果要压这种服务,一般而言需要配置负载均衡来压测,还有一种方式是在jmeter脚本里面配置访问不同的IP,配置方式如下:

  1. 在【用户定义的变量】中配置服务的IP列表
  2. 在【HTTP请求】中配置轮询访问的策略

${__V(iplist_${__Random(1,12)})}

【如何在压测平台上查看jmeter的日志】

日志对于压测排障来说,非常重要。下面讲在jmeter脚本加上详细的日志信息,在压测集群上查看日志信息的流程。

脚本添加日志

  • 在脚本的断言里面,使用log.info打印返回的内容
代码语言:javascript
复制
String response = new String(ResponseData);
log.info("===========================================================");
log.info(response);
if(!ResponseCode.equals("200")){
Failure = true;
FailureMessage="用户详细信息接口 失败,返回码:" + ResponseCode + "\n";
return;
}
String response = new String(ResponseData);
Failure = !(response.contains("\"errcode\":0"));
if (Failure) {
Failure = true;
FailureMessage="用户详细信息接口,未发现 \"errcode\":0" + response + "\n";
}

压测平台查看日志

(1)coding平台查看日志
  • 【构建计划】里面点击【查看详情】按钮
  • 【构建过程】点击【查看完整日志】(PS:压测执行完毕后才会看到日志)
(2)本地连压测集群查看日志
  • 如果电脑没有安装kubernetes客户端,需要先安装,参考连接:https://kubernetes.io/zh/docs/tasks/tools/install-kubectl/ 以window为例:
  • 先下载kubectl.exe,下载链接见https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/windows/amd64/kubectl.exe
  • 把kubectl的目录配置到环境变量的path中, 使用kubectl version --client 测试。
  • 进入目录C:\Users\ty\.kube\,创建config文件,把集群的配置信息复制到config文件中。ty为window登录的用户,.kube文件夹如果没有,需要创建。
  • 使用kubectl get pod 查看集群是否能访问,需要在腾讯云上加白名单。(找压测团队加白名单,或者配置为0.0.0.0/0)
  • 登录pod上:kubectl exec ***server**** -it /bin/bash
  • 使用tail -f jmeter-server.log 命令,查看实时日志

【如何在日志里面统计耗时】

比如想拿到耗时长的请求的信息,可以使用prev打印更多信息。

参考:jmeter 获取全部响应_Jmeter 记录请求和响应信息

【怎么让不同的pod上传不同的文件】

压测过程中需要每次请求的字段值不一样,在既定范围内,可以考虑采用随机数的方式来实现。

  • 在脚本中,sid的取值范围是13000000000~13099999999
  • 使用随机数,每个请求字段值不一样。130${__Random(11111111,99999999)}

【jmeter脚本没有勾选keep alive,QPS会周期性掉坑,报错Cannot assign requested address】

其原因是压测量太大,每个压测机的端口不够用。

具体的错误信息和grafan截图如下:

【window下的jmeter报错Address already in use: connect】

报错内容如下:

其原因是window默认给的端口是在5000以内,而事实上最大是65535,需要修改注册表,解决方案参考:https://blog.csdn.net/pittpakk/article/details/93474825

【计数器和随机数的使用】

使用场景:要求压测数据具有多样性

  1. 有规律的数据,使用计数器,请求到达最大值后,又从初始值开始,循环计数。
  1. 无规律的数据,使用随机数

${__Random(510000000050000000,590000000000000000)}

【如何生成用户数据token并保存到文件】

  1. 要准备用户数据文件。
  2. http请求内添加正则表达式提取器,获取接口返回字段。

3. http请求内添加BeanShell 后置处理程序 将获取的字段值写在文件里。

【如何将某文件上传到接口压测脚本中】

1. 添加http请求,填写参数。

2. 根据上传不同文件类型,填写不同MIME类型。

    1)数据文件是excel,MIME类型是application/vnd.ms-excel

    2)数据文件是图片,MIME类型是application/octet-stream

    3)数据文件是txt,MIME类型是text/plain

    4)数据文件是.doc,MIME类型是application/msword

3. 数据文件和脚本必须存放在同一目录。

【处理http请求时如何选择content-type类型和传参方式】

POST请求中content-type的三种数据类型:

  1. 第一种类型:content-type:application/x-www-form-urlencoded,如果不指定content-type类型,默认用此类型。

参数方式:Parameters参数格式和body data格式(key1=value1&key2=value2)均可。

注意:所以使用Parameters参数格式时,要么不设置content-type类型,要么设置content-type:application/x-www-form-urlencoded,不能用content-type:application/json类型去请求,否则报错!!!

  1. 第二种类型:content-type:application/json,以Json格式编码数据体,方便传输结构化数据(相比键值对)。

参数方式:body data为json格式

代码语言:javascript
复制
{
  "key1":"value1", 
 "key2":"value2" 
}

注意:使用Body Data时,Content-Type可传application/x-www-from-urlencoded或application/json,两者的区别是数据格式不同

  1. 第三种类型:content-type:multipart/form-data,需要在表单中进行文件上传时,就需要使用该格式。

参数方式:Parameters参数格式

示例:

【如何解决吞吐量掉0的问题】

在压测的过程中经常遇到吞吐量掉0的情况,比如下面两种情况

1、尖峰状的图形

与锯齿状类似,有一种更为激进的锯齿状图形,形成了独立的尖峰。这种图形跟锯齿状图形最大的不同是,尖峰状图形最低吞吐量会掉到0。

图形示例1:
原因分析:

可能是网关限流的问题。

网关限流,而后端实际请求处理能力大幅超过网关限流的限额可能会导致这种波形图。比如后端实际处理请求能力是10000次/s,而网关限流是100次/s,所以当每秒有10000个请求过来的时候,后端在0.01内就处理完100个请求,而后面9900个请求则会因为限流100次/s而被丢掉,从而导致这种吞吐量集中在一个很小时间点的尖峰情况。

解决方式:

查看网关配置,看是否把限流设置得太低,从而影响了后端性能的发挥。进一步地,需要确认现网的网关是否有类型配置,如果存在网关限流影响性能,应当考虑是否需要上调网关限流的配置,从而发挥机器更大的性能。

2、平顶山峰的图形

图形示例2:

与上一种尖峰型的图形不一样,有些图形掉到零以后会在高位徘徊一阵子,形成平顶山峰状

原因分析:

经过分析,是由于Redis CPU达到100%服务不可用所致,导致TPS值变为0,而后因为服务重启导致频繁掉0启动

解决方式:

遇到周期性掉0 的情况,可以优先检查内存、Redis的状况

【为什么接口耗时低,qps却上不去】

经过验证,之前某个项目提供的脚本文件中有一个返回值解析的脚本,对接口返回值做转码,逐字符解析,某接口返回几千个字符,导致脚本性能急剧下降。

可以验证为什么该接口耗时很短,qps却很低。也可以验证为什么低并发反而qps更高。

【为什么本地调试OK,集群跑错误率100%】

如图所示,路径/interface/放在”服务器名称或者IP"后面在本地是可以跑起来,但是在集群上跑不起来,需要把位置挪下来

【为什么本地跑接口报connection refused 错误】

在本地jmeter调试脚本,返回connection refused 错误,如下图,可以看到访问的是本地IP+8866端口

解决问题思路如下:

1.考虑是否对网络做了限制,向相关运维人员反馈本地ip地址,得到反馈没有做限制。

2.用curl发相同的请求,发现可以请求成功,可以看到访问到正确的ip+端口。

3.对比了jmeter和jdk版本,发现我使用的是open jdk 14版本,更换成jdk1.8。

4.重新发送请求还是返回连接被拒的问题,根据返回的内容如下:可以看到访问的是本地IP+8866端口 和curl不一致,猜测是否是走了代理。

5.查看了网络代理(系统偏好设置—>WIFI—>高级—>代理),看到了http和htpps访问了代理,关闭后重新打开jmeter,请求访问成功。

6.更改代理的原因是,打开fiddler会配置代理

【jmeter支持MQTT协议】

请参考:JMeter压测MQTT服务

【安装压测引擎软件(Mac版)】

1.首先需要确保使用k8s命令连上某个压测集群

2.下载软件和安装helm

git clone https://github.com/tkestack/charts.git

安装helm:brew install helm

PS:Mac 可以使用如下命令安装brew很快

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

3.进入到charts/incubator/jmeter-suite/charts/jmeter/values.yaml,确保tag是V1.4最新版本

4.进入到charts/incubator/jmeter-suite/values.yaml,需要设置压测节点的数量,数据库的大小,grafana登录界面的密码

代码语言:javascript
复制

# Default values for jmeter-helm.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

distributed-jmeter:
  enabled: true
  server:
    replicaCount: 10
    heap_size: 5g
  master:
    heap_size: 5g
  image:
    tag: "v1.4"

grafana:
  enabled: true
  adminUser: admin
  adminPassword: ************
  env:
    GF_AUTH_ANONYMOUS_ENABLED: "False"

influxdb:
  enabled: true
  persistence:
    enabled: true
    ## influxdb data Persistent Volume Storage Class
    ## If defined, storageClassName: <storageClass>
    ## If set to "-", storageClassName: "", which disables dynamic provisioning
    ## If undefined (the default) or set to null, no storageClassName spec is
    ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
    ##   GKE, AWS & OpenStack)
    ##
    # storageClass: "-"
    size: 40Gi

5.安装jmeter-suite

cd charts/incubator/

helm install healthcard jmeter-suite

6.卸载方式如下

helm list

helm delete healthcard

检查pvc有没有删除

kubectl get pvc

kubectl delete pvc xxxx

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【如果数据库满了,可以使用如下两条命令清理】
  • 【grafana下方的Individual Transaction没有数据】
  • 【grafana下方的Individual Transaction 面板有红色感叹号】
  • 【怎么在腾讯云账号上登录压测集群的Pod】
  • 【如何在jmeter配置阶梯摸高压测】
    • 方案1:使用JMeterPlugins-Standard插件
      • 方案2:使用bzm
      • 【grafana看板的transaction显示为None】
      • 【如何在jmeter配置host访问】
      • 【如何以轮询的方式访问不同的参数(如session/token/ip)】
        • 如果参数数量有限,可以使用 【添加】->【前置处理器】->【用户参数】
          • 如果参数数量很多,可以写到一个csv文件里面,然后在jmeter脚本读取该文件,【添加】-> 【配置元件】->【CSV数据文件设置】
            • 当然有时候也是需要随机访问,比如如下的场景。
            • 【如何在压测平台上查看jmeter的日志】
              • 脚本添加日志
                • 压测平台查看日志
                • 【如何在日志里面统计耗时】
                • 【怎么让不同的pod上传不同的文件】
                • 【jmeter脚本没有勾选keep alive,QPS会周期性掉坑,报错Cannot assign requested address】
                • 【window下的jmeter报错Address already in use: connect】
                • 【计数器和随机数的使用】
                • 【如何生成用户数据token并保存到文件】
                • 【如何将某文件上传到接口压测脚本中】
                • 【处理http请求时如何选择content-type类型和传参方式】
                • 【如何解决吞吐量掉0的问题】
                • 【为什么接口耗时低,qps却上不去】
                • 【为什么本地调试OK,集群跑错误率100%】
                • 【为什么本地跑接口报connection refused 错误】
                • 【jmeter支持MQTT协议】
                • 【安装压测引擎软件(Mac版)】
                相关产品与服务
                Grafana 服务
                Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档