前言

压力测试是比较常见的验证接口性能的方式,一般有很多压测工具,其中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, --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入门使用相关推荐

  1. JMeter入门,测试计划编写(http请求)

    一.Jmeter入门 1.1 Jemeter下载安装 A:下载Jmeter http://jmeter.apache.org/download_jmeter.cgi B:Jmeter插件安装 http ...

  2. JMeter入门(03)多台JMeter联合测试

    一.配置各个节点 1.配置jmeter.properties # Remote Hosts - comma delimited #remote_hosts=localhost:1099,localho ...

  3. jmeter入门学习记录

    jmeter入门学习记录 Jmeter 介绍 下载和运行 发送简单请求测试 第一步:建立Thread Group 第二步:新建一个 HTTP Request 第三步:添加HTTP Head Manag ...

  4. Jmeter 入门 从0-1 基础篇-实操

    Jmeter 入门 从0-1 基础篇 笔记有的图片链接可能失效了,等我修改好了在来编辑哈 文章目录 1 JMeter 1.1 JMeter环境搭建和基本使用 1.1.1 JMeter环境搭建 1.1. ...

  5. 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试

    每天15分钟JMeter入门篇(一):Hello JMeter 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试 每天15分钟JMeter入门篇(三):认识JMeter的逻辑控制器 ...

  6. JMeter入门操作简介

    JMeter入门操作简介 1.JMter简介及作用 JMter是Apache公司用Java开发的一款测试工具 接口测试.性能测试.数据库测试.java程序测试. 可以对服务器.网络或者对象模拟巨大的负 ...

  7. JMeter入门 | 第一个并发测试

    JMeter入门 | 第一个并发测试 背景 近期我们组新来了一些新同事,之前从来没有用过JMeter做个并发测试,于是准备了一系列小教程去指引新同事,本章主要是新人入门体验教程,快速实现第一个接口并发 ...

  8. Jmeter入门基础

    目录 Jmeter入门基础 前言 一.Jmeter简介 二.认识Jmeter界面 1.菜单栏 1.1.文件 1.2.编辑 1.3.查找 1.4.运行 1.5.选项 1.6.工具 1.7.帮助 2.工具 ...

  9. JMeter入门(1):JMeter总体介绍及组件介绍

    一.JMeter概述 JMeter就是一个测试工具,相比于LoadRunner等测试工具,此工具免费,且比较好用,但是前提当然是安装Java环境: JMeter可以做 (1)压力测试及性能测试: (2 ...

  10. JMeter入门教程(自己做测试了)

    本文版权归xmeter.net所有.欢迎转载,转载请注明出处. 简介 本文由xmeter君写给想了解性能测试和JMeter的小白,适合对这两者了解很少的同学们,如果已经有使用经验的请绕道,别浪费时间: ...

最新文章

  1. 拉取远程分支_git使用教程之创建本地库并关联远程库(笔记整理篇一)
  2. 为数字世界和通证经济健康发展保驾护航 币氪产品发布会在蓉举行
  3. [css] CSS content属性特殊字符有哪些?
  4. 北京市计算机专修学院,北京计算机专修学院:三大热门专业
  5. 图论 —— 生成树 —— 最小生成树 —— Prim
  6. 部署knight项目
  7. 理想汽车CEO李想晒11月理想ONE成绩
  8. Python程序的采样分析神器py-spy模块实践
  9. Windows系统下各浏览器常用CSS hack汇总表图
  10. MAC-终端命令大全
  11. 掌握 Microsoft Excel 宏和 Excel VBA
  12. 三菱MDS-D-SVJ3-10/20/10NA/20NA伺服驱动器
  13. html网页特效代码笔记,一个js实现的网页鼠标点击特效代码
  14. 如何做客户分析?客户分析的内容有哪些?
  15. oracle指定访问某表或某视图
  16. 遥感影像的特征空间图
  17. 计算机总是说该程序正在使用,另一个程序正在使用此文件,电脑程序正在使用此文件无法访问如何解决...
  18. 同一个基站连接两个核心网AMF POOL的场景分析及带AMF重选的注册流程
  19. topo排序判环实操
  20. 手机上怎么把图片转成PDF?操作起来很简单

热门文章

  1. 软件著作权登记常见问题问答
  2. cadence xrun仿真器使用
  3. Linux安装jdk配置环境变量无效(不生效)
  4. 2012搜狗校园招聘笔试题(1)
  5. Jpcap简介(转)
  6. 几款国外免费杀毒软件
  7. 刚哥谈架构 (五)- 推荐给架构师的书单
  8. 等了好久终于到今天--姐拿到驾照了(考试总结)
  9. buck拓扑原理及仿真
  10. pvpgn mysql d2gs_PVPGN1.8.2 + D2GS1.11(38)搭建暗黑破坏神1.11b战网(配置指南)