Jmeter常用控件详解

Jmeter常用控件详解

 

一、线程组

主要配合ConstantThroughput Timer 定时器控件 来控制并发量及执行次数

ConstantThroughput Timer 每分钟处理事务量(如设置60 相当于每个线程组每秒执行一次)


如图:每秒10并发,总共跑5000次

二、配置元件

1.HTTP信息头管理

通常公司内部环境使用,使用指定的头信息发送请求


2.JDBC Connection Configuration

数据源连接配置,下图以mysql数据源为例

注:jdbc:mysql://10.103.51.90:3306/xiaodai?allowMultiQueries=true

加此参数为了配合JDBC Request使用,可以执行多条sql语句


3.HTTP Cookie管理器

创建控件即可,会自动保存Cookie状态

4.用户定义的变量

内部变量定义与取值,${名称}

5.CSV Data Set Config

外部数据源定义与取值


三、逻辑控制器

1.如果(IF)控制器

条件:字符串比较  “${变量名}” == “字符串”

条件:整数比较  ${变量名} == 整数

注:条件为比较字符串,比较两边都需要加双引号

2.While Controller控制器

条件:字符串   ${__javaScript(${变量名}!=5&& ${变量名} == 1)}

条件:整数比较   ${__javaScript(“${变量名}”!= “字符串” && ${变量名} == 整数)}

使用技巧

场景:循环5次数退出循环体 配合计数器来实现

节点示意图


1)  创建While Controller 条件:${__javaScript(${count}!=5)}

2)  在控制器子节点创建计数器


场景:循环10分钟退出循环体 配合BeanShell Sampler

节点示意图


1)  创建BeanShell Sampler 通过脚本获取当前时间(也是初始化的启始时间)

vars.put("startTime","${__time(HHmmss,)}");

2)  创建While Controller控制器

${__javaScript(${startTime}+600>${currentTime})}(以秒为单位 600为10分钟)

开始时间+运行时间>当前时间 退出循环体

3)创建BeanShell Sampler 通过脚本获取当前时间(实时获取当前时间为了与启始时间实时比对)

3.Switch Controller控制器

Switch Value:${变量名 } (变量可以是字符串或者整数)

使用技巧

场景:根据变量值分别走不通的分支   配合简单控制器、BeanShell Sampler

节点示意图


1)  创建BeanShell Sampler  最终将代码返回的值赋给S_isPhone


代码引用了外部jar包,主要功能判断手机号是哪家运营商,将返回值赋给S_isPhone

2)创建Switch Controller控制器  Switch Value:${S_isPhone}  变量传递

3)节点下创建三个简单控制器  名称分别是:中国移动、中国联通、中国电信

四、Sampler

1.JDBC Request


1)此处Variable Name是JDBC Connection Configuration里的Variable Name

2)Query Type:Callable Statement 可以执行多次sql   注:JDBC Connection Configuration里的Database URL:地址后必须加?allowMultiQueries=true

3)Variable names 用于取值定义的变量名

使用技巧

变量取值方式

3.1)Variable names方式定义变量名

例:SELECTVERIFY_CODE,PHONE FROM SMS_VERIFY

${DB_code1_1}取的第一列VERIFY_CODE的值

${DB_code1_2}取的第一列PHONE的值

………以此类推

3.2)Result variable name方式定义变量名

例:SELECT *FROM SMS_VERIFY

${__BeanShell(vars.getObject("Result variablename变量名").get(${__intSum(1,-1)}).get("数据库字段名"))}

${__BeanShell(vars.getObject("Result variablename变量名").get(${__intSum(1,-1)}).get("VERIFY_CODE"))}取的第一列VERIFY_CODE的值

 

2.SSH Command请求

如图为通过证书方式登录

使用技巧

结合linux命令可以达到日志收集的效果

场景:搜索文件jm开头并且包含access字符串的文件,并将指定文件挪到历史文件夹nmonhis下,并通过tail –f 实时输出到新的文件里

ls /server/nmondir/jm_*|grep access|xargs -i mv {}/server/nmondir/nmonhis/;tail -f /data/nginx/logs/access.log >>/server/nmondir/jm_nginxsidekiq_24.85.access${__time(YMDHMS)}.log&

注1:有些命令不能直接通过管道符号执行命令,需要通过xargs来调,xargs –i 配合 {} 可以达到文件替换的作用,如上面一行命令将管道分符左部分命令过滤的内容替换到{}位置

注2:如果远程登录的服务器账户不是root用户很多常用操作没有权限

方法2.1 通过chown修改当前操作的文件夹或文件为该用户组

方法2.2 通过执行命令前加sudo命令,需要编辑 /etc/sudoers 文件,将Default requiretty注释掉。

3.BeanShell Sampler


参数位置输入变量名称,多个变量以空格隔开

变量取值通过bsh.args[n],n为数组下标0到n分别对应参数名称依次取值

五.监视器

1.SSHMon Samples Collector

使用前需要添加扩展插件http://blog.csdn.net/u011417723/article/details/78215012

读取cpu指标sar -u1 1 | awk '/^Average:/{print 100-$8}'

读取io指标iostat-x -k -d 1 2 |grep 'vdb' |awk '{print $14}' |awk 'NR==2{print}'| awk -F.'{print $1}'

注1:如需证书访问远程机,添加证书需要用${__FileToString(路径/xx.pem)}

注2:通过iostat取指标时,第一条数据无效,通过awk 'NR==2{print}'取第二条数据

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值