当前位置: 首页 > news >正文

JMeter并发测试与多进程测试

Apache JMeter是一个开源的负载测试工具,用于评估和分析系统的性能和功能。它可以模拟多种类型的负载,包括Web应用程序、数据库服务器、FTP服务器等,并可用于测量服务器的性能、资源使用情况和响应时间。这里主要学习Meter并发测试与多进程测试:

并发测试基础

并发测试是指同时模拟多个用户访问系统,以测试系统在高负载下的表现。

基本并发测试设置

1、线程组设置:

在测试计划中添加 Thread Group

设置:

  •   Number of Threads (users):并发用户数

  •   Ramp-Up Period (seconds):启动所有线程所需时间

  •   Loop Count:每个线程的循环次数

2、简单并发测试示例:

100个用户,5秒内启动完毕,每个用户执行10次请求

多进程测试实现方式

JMeter 可以通过以下几种方式实现多进程/分布式测试:

1. 单机多线程(默认方式)

JMeter 默认使用多线程模拟并发,但受限于单台机器的资源(CPU、内存、网络等)。

2. 分布式测试(多机多进程)

这是实现真正大规模并发测试的推荐方式。

分布式测试架构

  • Master:控制测试执行的机器

  • Slave(s):实际执行测试的机器

设置步骤

1.在Slave机器上:

修改 jmeter.properties 文件:

server.rmi.ssl.disable=true # 禁用SSL(仅测试环境) server_port=1099 # 设置监听端口

启动JMeter服务器模式:

jmeter-server

2.在Master机器上:

修改 jmeter.properties 文件:

remote_hosts=slave1_ip:1099,slave2_ip:1099  # 添加所有slave的IP和端口

创建测试计划

运行测试时选择远程执行:

菜单:Run → Remote Start → 选择slave

或命令行:jmeter -n -t test.jmx -R slave1_ip,slave2_ip

3. 使用Stepping Thread Group插件

对于更复杂的并发模式,可以安装 Stepping Thread Group 插件:

  • 通过JMeter插件管理器安装

  • 添加到测试计划中

  • 设置阶梯式增长的并发用户数

关键配置参数

1)线程组参数:

  • Number of Threads:并发用户数

  • Ramp-Up:控制用户启动速率

  • Scheduler:设置测试持续时间

2)JVM参数调整(在 jmeter.bat/jmeter.sh 中):

HEAP="-Xms1g -Xmx4g -XX:MaxMetaspaceSize=256m"

3)TCP/IP参数(对于高并发):

  • 增加操作系统文件描述符限制

  • 调整TCP参数(如 net.ipv4.tcp_max_syn_backlog)

常见问题解决

1.JMeter Master连接Slave失败:

  • 检查防火墙设置

  • 确保所有机器使用相同JMeter版本

  • 检查 jmeter.properties 中的端口配置

2.结果不准确:

  • 确保测试环境与生产环境相似

  • 排除网络延迟影响(考虑在同一局域网测试)

3.JMeter机器资源不足:

  • 减少单个JMeter实例的线程数

  • 增加更多Slave机器

  • 优化测试计划(减少监听器使用)

通过合理配置JMeter的并发和多进程测试,您可以有效地评估系统在高负载下的性能表现。

http://www.dtcms.com/a/327800.html

相关文章:

  • __base__属性
  • ETCD的简介和使用
  • 42.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成认证(一)
  • 1513-map 的三种声明定义方式 使用方式
  • BN层:深度学习中的“数据稳定器”,如何解决训练难题?
  • 基于C#的二手服装交易网站的设计与实现/基于asp.net的二手交易系统的设计与实现/基于.net的闲置物品交易系统的设计与实现
  • 嵌入式Linux学习 -- 软件编程3
  • UNet改进(32):结合CNN局部建模与Transformer全局感知
  • Docker 101:面向初学者的综合教程
  • 【C#】从 Queue 到 ConcurrentQueue:一次对象池改造的实战心得
  • 激活函数篇(2):SwiGLU | GLU | Swish | ReLU | Sigmoid
  • 如何查看当前Redis的密码、如何修改密码、如何快速启动以及重启Redis (Windows)
  • 鹧鸪云:光伏施工流程管理的智能“导航仪”
  • 云平台监控-云原生环境Prometheus企业级监控实战
  • 【Redis与缓存预热:如何通过预加载减少数据库压力】
  • RoboNeo美图AI助手
  • 如何单独修改 npm 版本(不改变 Node.js 版本)
  • npm、pnpm、yarn区别
  • 深度解析Mysql的开窗函数(易懂版)
  • docker-compose安装ElasticSearch,ik分词器插件,kibana【超详细】
  • 夜莺开源监控,模板函数一览
  • 集合,完整扩展
  • 任务调度系统设计与实现:Quartz、XXL-JOB 和 Apache Airflow 对比与实践
  • 【项目设计】高并发内存池
  • windows系统端口异常占用删除教程
  • Go面试题及详细答案120题(0-20)
  • [TryHackMe]Internal(hydra爆破+WordPress主题修改getshell+Chisel内网穿透)
  • 《Q————Mysql连接》
  • Linux软件编程:IO(二进制文件)、文件IO
  • 【25-cv-08993】T Miss Toys 启动章鱼宠物玩具版权维权,15 项动物玩偶版权均需警惕