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 = 13. 增加端口
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, --nonguirun JMeter in nongui mode
-t, --testfile <argument>the jmeter test(.jmx) file to run
-e, --reportatendofloadtestsgenerate 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, --runremoteStart 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的数据验证,包括性能差异。
jmeter入门使用相关推荐
- JMeter入门,测试计划编写(http请求)
一.Jmeter入门 1.1 Jemeter下载安装 A:下载Jmeter http://jmeter.apache.org/download_jmeter.cgi B:Jmeter插件安装 http ...
- JMeter入门(03)多台JMeter联合测试
一.配置各个节点 1.配置jmeter.properties # Remote Hosts - comma delimited #remote_hosts=localhost:1099,localho ...
- jmeter入门学习记录
jmeter入门学习记录 Jmeter 介绍 下载和运行 发送简单请求测试 第一步:建立Thread Group 第二步:新建一个 HTTP Request 第三步:添加HTTP Head Manag ...
- Jmeter 入门 从0-1 基础篇-实操
Jmeter 入门 从0-1 基础篇 笔记有的图片链接可能失效了,等我修改好了在来编辑哈 文章目录 1 JMeter 1.1 JMeter环境搭建和基本使用 1.1.1 JMeter环境搭建 1.1. ...
- 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试
每天15分钟JMeter入门篇(一):Hello JMeter 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试 每天15分钟JMeter入门篇(三):认识JMeter的逻辑控制器 ...
- JMeter入门操作简介
JMeter入门操作简介 1.JMter简介及作用 JMter是Apache公司用Java开发的一款测试工具 接口测试.性能测试.数据库测试.java程序测试. 可以对服务器.网络或者对象模拟巨大的负 ...
- JMeter入门 | 第一个并发测试
JMeter入门 | 第一个并发测试 背景 近期我们组新来了一些新同事,之前从来没有用过JMeter做个并发测试,于是准备了一系列小教程去指引新同事,本章主要是新人入门体验教程,快速实现第一个接口并发 ...
- Jmeter入门基础
目录 Jmeter入门基础 前言 一.Jmeter简介 二.认识Jmeter界面 1.菜单栏 1.1.文件 1.2.编辑 1.3.查找 1.4.运行 1.5.选项 1.6.工具 1.7.帮助 2.工具 ...
- JMeter入门(1):JMeter总体介绍及组件介绍
一.JMeter概述 JMeter就是一个测试工具,相比于LoadRunner等测试工具,此工具免费,且比较好用,但是前提当然是安装Java环境: JMeter可以做 (1)压力测试及性能测试: (2 ...
- JMeter入门教程(自己做测试了)
本文版权归xmeter.net所有.欢迎转载,转载请注明出处. 简介 本文由xmeter君写给想了解性能测试和JMeter的小白,适合对这两者了解很少的同学们,如果已经有使用经验的请绕道,别浪费时间: ...
最新文章
- 拉取远程分支_git使用教程之创建本地库并关联远程库(笔记整理篇一)
- 为数字世界和通证经济健康发展保驾护航 币氪产品发布会在蓉举行
- [css] CSS content属性特殊字符有哪些?
- 北京市计算机专修学院,北京计算机专修学院:三大热门专业
- 图论 —— 生成树 —— 最小生成树 —— Prim
- 部署knight项目
- 理想汽车CEO李想晒11月理想ONE成绩
- Python程序的采样分析神器py-spy模块实践
- Windows系统下各浏览器常用CSS hack汇总表图
- MAC-终端命令大全
- 掌握 Microsoft Excel 宏和 Excel VBA
- 三菱MDS-D-SVJ3-10/20/10NA/20NA伺服驱动器
- html网页特效代码笔记,一个js实现的网页鼠标点击特效代码
- 如何做客户分析?客户分析的内容有哪些?
- oracle指定访问某表或某视图
- 遥感影像的特征空间图
- 计算机总是说该程序正在使用,另一个程序正在使用此文件,电脑程序正在使用此文件无法访问如何解决...
- 同一个基站连接两个核心网AMF POOL的场景分析及带AMF重选的注册流程
- topo排序判环实操
- 手机上怎么把图片转成PDF?操作起来很简单