Apache JMeter是一个开源的负载测试工具,用于评估和分析系统的性能和功能。它可以模拟多种类型的负载,包括Web应用程序、数据库服务器、FTP服务器等,并可用于测量服务器的性能、资源使用情况和响应时间。这里主要学习Meter并发测试与多进程测试:
并发测试基础
并发测试是指同时模拟多个用户访问系统,以测试系统在高负载下的表现。
基本并发测试设置
1、线程组设置:
在测试计划中添加 Thread Group
设置:
-
Number of Threads (users):并发用户数
-
Ramp-Up Period (seconds):启动所有线程所需时间
-
Loop Count:每个线程的循环次数
2、简单并发测试示例:
100个用户,5秒内启动完毕,每个用户执行10次请求
多进程测试实现方式
JMeter 可以通过以下几种方式实现多进程/分布式测试:
- 单机多线程(默认方式)
JMeter 默认使用多线程模拟并发,但受限于单台机器的资源(CPU、内存、网络等)。
- 分布式测试(多机多进程)
这是实现真正大规模并发测试的推荐方式。
分布式测试架构
-
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
- 使用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的并发和多进程测试,您可以有效地评估系统在高负载下的性能表现。