如何使用jmeter对服务器进行性能测试,使用JMeter进行性能测试

性能测试需要模拟多种场景,经常受制于资源限制,没办法建立贴近实际部署环境的场景。因而需要借助一些软硬件提供的特性来模拟近似的环境。本文提到的JMeter是一种开源的模拟测试解决方案,可以通过多线程并发的方式来持续提供压力测试源。

1.下载安装

仅仅需要从apache的网站找到下载包,解压到本地文件目录即可。

2.启动

解压目录中存在一个bin的目录,里面有很多批处理文件和脚本文件,window系统运行jmeter.bat即可。需要关注的是bin目录中的jmeter.properties文件,这是运行相关的配置文件.

特别是TCP Sampler configuration部分几个配置会和后面内容相关

3.建立一种类型测试

这里只描述简单的tcp测试建立步骤,因为目前支持的测试类型很多,无法一一陈述,功能细节部分可以参考JMeter文档

1)创建测试线程组

a4c26d1e5885305701be709a3d33442f.png

2)根据需要设定线程组参数

a4c26d1e5885305701be709a3d33442f.png

3)建立TCP采样

a4c26d1e5885305701be709a3d33442f.png

3)配置TCP采样参数

a4c26d1e5885305701be709a3d33442f.png

基本上一个简单的测试计划就完成了,点击运行采样,就会将文本发送出去。

4.高级功能配置

1)配置结果查看监听器

有时候需要查看线程组执行结果情况,这个可以通过设定采样结果查看

a4c26d1e5885305701be709a3d33442f.png

针对上面配置的线程组应该执行6次,也就是发送6条消息,通过监控器可以看到的确有6个采样结果,说明执行成功

a4c26d1e5885305701be709a3d33442f.png

2)配置变量

有时候需要在报文中加上一些变化的内容,可以通过在文本中增加变量设定来实现

a4c26d1e5885305701be709a3d33442f.png

如增加一个变量名 bank, 其值为 1111,在前面发送的报文中加上${bank}即可引用,如

a4c26d1e5885305701be709a3d33442f.png

执行之后就可以在监控器中看到报文中有1111了

3)配置TCP 二进制报文

大多数情况下,报文可能非纯文本形式,常常都是不可读的二进制,所以这种情况下需要配置二进制报文。当前JMeter支持HEX形式,也就是16进制的报文输入配置

当前支持三种格式 1.TCPClientImpl(默认) 2.BinaryTCPClientImpl

3.LengthPrefixedBinaryTCPClientImpl

使用二进制方式需要做如下几件事:

a.把普通文本报文翻译成HEX格式,可以找文本编辑器做这件事。比如notepad++,打开文本文件

Ctrl+A全选内容,paste到一个新文件,替换掉所有空格

3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e3c544c533e3c707273636f64653e6c6f67696e3c2f707273636f64653e3c69643e313233343536373c2f69643e3c746f6b656e3e75736a64666a6b736137356b733833326f6b7564736a643934383737616b6a6475613c2f746f6b656e3e3c2f544c533e

a4c26d1e5885305701be709a3d33442f.png

如果报文还需要加上头的话,需要额外计算一下。比如增加一个command

id和报文长度。比如上文中文本长度在编辑器状态栏上显示155长,假定command id是1.

System.out.println("155 hex " +

Integer.toHexString(155)); --- 9b

System.out.println("1 hex " +

Integer.toHexString(1)); ---1

如果command id是4个字节那么16进制字符串就是 00 00 00 01

如果length也是4个字节那么16进制字符串就是 00 00 00 9b

去掉空格加入到前面报文中就拼成如下新报文

000000010000009b3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e3c544c533e3c707273636f64653e6c6f67696e3c2f707273636f64653e3c69643e313233343536373c2f69643e3c746f6b656e3e75736a64666a6b736137356b733833326f6b7564736a643934383737616b6a6475613c2f746f6b656e3e3c2f544c533e

再把新报文放入发送字符串输入框中。

b.修改JMeter启动配置,就是前文提到的指定BinaryTCPClientImpl适配

在jmeter.properties文件中找到如下部分,修改一下

#---------------------------------------------------------------------------

# TCP Sampler configuration

#---------------------------------------------------------------------------

# The default handler class

#tcp.handler=TCPClientImpl

tcp.handler=BinaryTCPClientImpl

重新执行TCP测试,可以看到服务器端正常收到报文,如图

a4c26d1e5885305701be709a3d33442f.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值