Jmeter - 安装与使用

Jmeter 介绍与安装#

性能测试:模拟多个用户的操作对服务器硬件性能的影响。

  • TPS:每秒事物处理能力
  • RT:响应时间

常见性能压力测试工具

  • Apache Jmeter:Java 语言开发,开源
  • LoadRunner:C 语言开发,商业
  • Locust:python 语言开发,开源

Jmeter 优点

  • 入门简单,有图形化界面
  • 插件机制,可以二次定制
  • 支持多操作平台

压测脚本录制与编写#

Jmeter 配置代理#

  • Test plan -> Add -> Thread Group

  • Thread Group -> Add -> Logic Controller -> Recording Controller

  • Test plan -> Add -> Non-Test Elements -> HTTP(S) Test Script Recorder

image

信任后,点击 start。 在 jmeter/bin 目录下,会自动生成证书。Mac 系统双击证书,钥匙串内选择 登录 - 证书,找到 jmeter 证书,设置为始终信任,关闭弹窗,输入电脑密码即可。

image

浏览器配置代理#

Chrome 浏览器,安装 SwitchOmega 插件,创建 jmeter 情景模式,端口号设置为 8888

录制与回放#

开始录制后,访问网页,就会把请求都记录在 Recording Controller 内。

录制的请求比较多,可以通过 HTTP(S) Test Script Recorder 设置过滤:

  • URL Patterns to Include 仅录制配置内的域名
  • URL Patterns to Exclude 排除配置内的域名(.*\.(png|gif|js|ttf|woof|css).*

录制完成后,关闭录制。添加 View Result Tree,重新 start 录制的请求,即可看到响应信息。

虚拟用户并发模拟#

Test Group 设置

压测结果分析#

Listener View Result Tree#

查看结果树,直接在当前界面显示请求结果

  • RegExp Tester(正则表达式)
  • CSS 选择器
  • Xpath Tester
  • Json Tester

Aggregate Report#

聚合报告,显示请求时间、tps 等百分比

图形化界面创建好请求后,运行

# -n 不启动图形化界面
# -t 指定测试脚本
# -l 指定测试结果
# -R 指定远程节点,多个节点中间用逗号隔开
$ ./jmeter.sh -n -t test_script.jmx -l test_script.jtl
# 本地启动一个 python 服务
$ python -m http.server 80
# 本地启动一个 nginx 服务
docker run --name nginx-load-test -p 88:80 -d nginx:1.17.9

Jmeter 分布式压测#

分布式简介#

单机性能瓶颈,CPU、内存、IO等

大型系统, 单机无法模拟,所以需要多台机器对一台服务器施压。

工作节点 - slave 部署#

负载机(slaves):端口 tcp 1099

jmeter/bin 目录下修改配置文件:

  • jmeter.properties: 关闭 SSL server.rmi.ssl.disable=true
  • system.properties: java.rmi.server.hostname=192.xxx.xxx.xx(本机地址)
  • 运行 jmeter-server

等待出现 created remote object... 即可,节点配置完毕,等待控制机连接。

控制节点 - Master 部署#

控制端(Master):端口 udp 4445

jmeter/bin/jmeter.properties 修改配置文件:

  • 添加负载机 IP:remote_host = slave 节点的 hostname,多个用逗号隔开
  • 关闭 SSL:server.rmi.ssl.disable=true

运行测试#

windows 注意关闭防火墙

启动 jmeter 界面程序,运行菜单内,可控制所有远程机器。

  • 远程退出所有:节点远程服务直接关闭,远程机器退出命令行
  • 如果有多台机器的话,线程数设置为 10,那么就是每台机器上都起 10 个线程。

Backend Listener

将测试数据转入到数据库内

作者:ABEELAN

出处:https://www.cnblogs.com/abeelan/p/17203418.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ABEELAN  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示