| |
|
|
开发:
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参数修改。?
?加上一些监听器
测试验证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 获取客户端地址 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/17 14:54:53- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |