| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:23:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |