浅识Jmeter与浅谈互联网公司高并发业务压测流程痛点

浅谈Jmeter

什么是Jmeter

JMeter 是 Apache 软件基金会开发的一个开源软件,用于负载测试和性能测试。它被设计用来模拟多种请求到服务器、网络或对象,以测试其性能。JMeter 可以用于测试静态和动态资源,并且可以模拟各种协议的请求,包括但不限于:

  • HTTP 和 HTTPS:测试Web应用
  • FTP
  • SMTP
  • IMAP
  • JMS
  • LDAP
  • WebSockets

JMeter 还提供了多种功能,如:

  • 多线程测试:能够模拟多个用户同时访问应用程序。
  • 测试计划和脚本的保存:可以保存测试计划和脚本,供以后重用。
  • 结果分析:提供了多种图表和报表来分析测试结果。
  • 插件支持:JMeter 社区提供了许多插件,增强了其功能。

JMeter 适用于开发人员、测试工程师和系统管理员,帮助他们了解应用程序在不同负载下的表现,从而优化性能和稳定性。

运行环境:需要安装JDK8 以上

Jmeter目录

复制代码
bin:核心可执行文件,包含配置 

jmeter.bat: windows启动文件(window系统一定要配置显示文件拓展名) 
jmeter: mac或者linux启动文件 
jmeter-server:mac或者Liunx分布式压测使用的启动文件 
jmeter-server.bat:window分布式压测使用的启动文件
jmeter.properties: 核心配置文件   

extras:插件拓展的包

lib:核心的依赖包

配置文件修改

bin目录 -> jmeter.properties

语言问题

复制代码
默认 #language=en
复制代码
改为 language=zh_CN

响应乱码问题解决

复制代码
# sampleresult.default.encoding=ISO-8859-1的注释去掉,
复制代码
改成:sampleresult.default.encoding=UTF-8

PS

  • JMeter 不是浏览器,它在协议级别工作

  • 对于 Web 服务和远程服务而言,JMeter 看起来像一个浏览器

  • JMeter 并不执行浏览器支持的所有操作,不像浏览器那样呈现 HTML 页面,不执行 HTML 页面中的 JS

Jmeter5.X核心功能组件+线程组和Sampler

核心功能组件

  1. 测试计划(Test Plan):这是JMeter测试的起点,所有测试元素都包含在测试计划中。
  2. 线程组(Thread Group):代表虚拟用户组,可以设置线程数、Ramp-Up 期(启动时间)和测试的循环次数。
  3. 配置元件(Config Element):用于设置测试环境,如HTTP请求默认值、数据库连接等。
  4. 前置处理器(Pre Processors):在请求发送前对请求进行修改或添加信息。
  5. 后置处理器(Post Processors):在请求发送后对响应进行处理。
  6. 断言(Assertions):用于验证响应结果是否符合预期。
  7. 监听器(Listeners):用于查看和分析测试结果,如查看请求和响应数据、生成图表等。
  8. 定时器(Timers):控制请求之间的间隔时间。
  9. 控制器(Controllers):用于组织Samplers,如逻辑控制器、循环控制器等。

线程组(Thread Groups)

线程组是模拟用户行为的核心组件,以下是其主要功能:

  • 名称:线程组的标识。
  • 线程数(Number of Threads):模拟的虚拟用户数。
  • Ramp-Up 期(Ramp-Up Period):所有线程启动所需的时间,用于平滑启动测试。
  • 循环次数(Loop Count):每个线程执行的请求次数,可以设置为永远循环(Forever)。
  • 调度器(Scheduler):可以设置测试开始的时间。

Samplers

采样器是实际执行请求的组件,以下是一些常用的Samplers:

  1. HTTP请求(HTTP Request):用于模拟对Web服务器的请求。
  2. FTP请求(FTP Request):用于模拟FTP服务器的请求。
  3. JDBC请求(JDBC Request):用于模拟数据库请求。
  4. LDAP请求(LDAP Request):用于模拟LDAP服务器的请求。
  5. JMS点对点(JMS Point-to-Point):用于模拟JMS消息传递。
  6. WebSocket请求(WebSocket Request):用于模拟WebSocket通信。
  7. TCP请求(TCP Request):用于模拟TCP协议的请求。
  8. 自定义Sampler:用户可以编写自定义的Sampler来满足特定需求。

每个Sampler都可以配置具体的请求参数,如URL、方法(GET、POST等)、请求头、请求体等。Sampler执行请求后,会生成响应数据,这些数据可以被后续的监听器捕获并展示。

JMeter 5.x 版本在之前的基础上增加了对现代应用程序的支持,如WebSockets和分布式测试的改进,以及用户界面和性能的优化。使用JMeter进行性能测试时,可以根据测试需求选择合适的组件和配置。

互联网公司高并发业务的Jmeter压测流程痛点

痛点一:本地测试环境与生产环境差异

痛点二:Linux服务器命令行压测配置复杂性

痛点三:JMX脚本和参数化文件管理

痛点四:测试报告生成和存储

痛点五:不同环境下的测试一致性

痛点六:性能优化后的再测试

相关推荐
gobeyye14 分钟前
spring loC&DI 详解
java·spring·rpc
鱼跃鹰飞15 分钟前
Leecode热题100-295.数据流中的中位数
java·服务器·开发语言·前端·算法·leetcode·面试
我是浮夸18 分钟前
MyBatisPlus——学习笔记
java·spring boot·mybatis
TANGLONG22225 分钟前
【C语言】数据在内存中的存储(万字解析)
java·c语言·c++·python·考研·面试·蓝桥杯
杨荧27 分钟前
【JAVA开源】基于Vue和SpringBoot的水果购物网站
java·开发语言·vue.js·spring boot·spring cloud·开源
Leighteen1 小时前
ThreadLocal内存泄漏分析
java
java6666688881 小时前
Java中的对象生命周期管理:从Spring Bean到JVM对象的深度解析
java·jvm·spring
柚乐果果1 小时前
数据分析实战简例
java·大数据·python
我焦虑的编程日记2 小时前
【RabbitMQ】RabbitMQ学习
java·数据库·java-ee
晚睡早起₍˄·͈༝·͈˄*₎◞ ̑̑2 小时前
JavaWeb(二)
java·数据仓库·hive·hadoop·maven