IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> jmeter入门使用 -> 正文阅读

[开发测试]jmeter入门使用

前言

压力测试是比较常见的验证接口性能的方式,一般有很多压测工具,其中jmeter是比较实用的开源工具,使用Java语言编写,支持跨平台。实际上压测就是控制变量法,只能在特殊条件下的理想结果,实际运行是有一定差异的,只能作为参考。

1. JDK配置

JDK使用Oracle JDK,openjdk都可以,配置好JAVA_HOME,JDK尽量选择LTS版本,即8,11,17,目前推荐JDK11,优选openjdk。以macos为例,Linux同理,笔者做过jmeter测试OpenJDK与Oracle JDK的性能差异不大,5%~10%左右,主要的JVM参数通用,可以无缝切换。但是ARM版架构的JDK由于JNI的特性,需要部分C/C++的底层so文件支持。不过OpenJDK是没有javafx的,但是有开源jar,直接pom依赖即可org.openjfx。

笔者还没有升级,还是JDK8

2. jmeter配置

配置path路径,方便执行jmeter指令

配置好后,执行source指令,让path生效,执行jmeter -v

3. 压测文件准备

压测可以是rpc协议,也可以是http协议,以常见的http协议为例,底层是socket通信,socket方式有tcp和udp,目前udp被确认在http3.0使用。

3.1 启动jmeter

?有2个重要的点

1. 推荐实际压测使用non gui

? ? ? ? 不使用gui是因为,一般测试都在服务器上,本身就没有gui,而且一般是最小安装的,而且gui会占用一些资源。

2. 调节jvm参数,在jmeter的启动脚本中

? ? ? ? jmeter.sh脚本明确写了设置JVM的方式JVM_ARGS配置

? ? ??

? ? ? ? 那么生效的方式呢

? ? ? ??

? ? ? ? ?$@ 是传给脚本的所有参数的列表

3.2 参数配置

实际上jmeter的能力非常全面,以线程池http为例

一般需要设置用户数,jmeter用线程模拟用户,循环次数,还可以设置定长时间,也可以不设置,按照样本数测试。

?选择协议,根据实际情况选择

以http为例,这里的Keepalive点掉,不然端口来不及回收,会报cannot assign requested address

如果这个不配置,仍然报错,可以增加服务器使用的端口数量,减少端口超时时间,多台服务器压测,实际上部分参数会引发NAT的故障:(101条消息) 【经验总结】tcp_tw_recycle参数引发的故障_wireless_tech的博客-CSDN博客_tcp_tw_recycle参数修改。?

1. 调低端口释放等待时间,按需调整
sysctl -w net.ipv4.tcp_fin_timeout=15
2. 释放TIME_WAIT端口给新连接使用
sysctl -w net.ipv4.tcp_tw_reuse?=?1

3. 增加端口
vim /etc/sysctl.conf
net.ipv4.ip_local_port_range = 10000 ? ? 65000 ? ? ?#表示10000到65000的端口可用

sysctl -p

?加上一些监听器

测试验证OK后,导出jmx文件

4. 压测

实际上在启动时jmeter就告诉了用法

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

只是这些参数的意义:Apache JMeter - User's Manual: Getting Started

-n, --nongui
        run JMeter in nongui mode
-t, --testfile <argument>
        the jmeter test(.jmx) file to run
-e, --reportatendofloadtests
        generate report dashboard after load test
-o, --reportoutputfolder <argument>
        output folder for report dashboard

使用一个demo测试

nohup jmeter -n -t demo.jmx -l result.jtl -e -o ./res &

生成了result.jtl的结果数据,res目录有生成好的图表

5. 集群压测

上面的方式简单测试一台服务器足够,但是当需要批量回放或者测试某个环境的时候,单台client就有性能瓶颈,需要多个jmeter的client同时请求,然后把各自的结果聚合汇总。

-r, --runremote
        Start remote servers (as defined in remote_hosts)
-R, --remotestart <argument>
        Start these remote servers (overrides remote_hosts)

仍然去看参数,有-r的参数,其实就是协同jmeter的server-client集群,架构设计如下,真正干活的是jmeter-server

Apache JMeter - User's Manual: Remote (Distributed) Testing

?5.1 ssl配置

Apache JMeter - User's Manual: Remote (Distributed) Testing

?jmeter 4.0开始就需要ssl默认rmi启动时,可以关闭,也可以配置jks并拷贝到bin目录,笔者配置了jks文件证书,并拷贝到各个实例的bin目录

5.2 启动jmeter-server

编辑jmeter的bin目录下的jmeter.properties文件,开启端口,默认就是开启的,我这里使用一台机器,通过不同的端口模拟,所以修改了端口,注意墙通不通,telnet检查

我这里做了一个本地集群,实际上没什么用,只是模拟demo,如果是多台服务器无需修改端口

启动nohup ./jmeter-server &,启动服务端

?5.3 启动client,查看结果

客户端修改远程端口,bin/jmeter.properties文件,笔者使用localhost不行,因为证书原因

?执行测试命令

./jmeter -n -t demo.jmx -r -l result.jtl -e -o res

命令跟以前一样,只不过增加了-r

?也可以使用-R,不配置remote_hosts

查看聚合结果,result.jtl和res文件夹,跟以前一样

总结

jmeter是压测工具的一种,实际上功能十分强大,而且Apache开源项目,简单使用了jmeter压测http,集群压测。只是笔者使用经验的总结,笔者通过这种方式验证了OpenJDK替代Oracle JDK的数据验证,包括性能差异。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:16:21  更:2022-05-06 11:17:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:23:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码