分布式压测和项目调优
2024年12月26日...大约 3 分钟
本章介绍如何使用Docker 容器来搭建压力测试监控平台。
1. 分布式压测
在使用 JMeter 进行大并发压力测试时,单台机器往往受限于内存、CPU 和网络 I/O,导致服务器压力未达到预期,但压测机的压力已经过大并发生崩溃。
为了解决这一问题,JMeter 提供了分布式压测功能,从而显著提升其负载能力。
单机网络带宽有限,高延时场景下,单机可模拟最大线程数有限。
下图是分布式压测架构:
需要注意的是,JMeter 分布式压测中,Controller 节点负责协调,Slave 节点负责执行测试。当控制器节点配置 10 个线程,每个线程循环 100 次时,单个控制器会产生 1000 个请求样本。在 Master 启动压测后,每台 Slave 都会执行相同的测试配置,向被测服务发送 1000 次请求。因此,如果使用 3 台 Slave,总共会产生 3000 次请求样本。
搭建 JMeter 分布式压测环境注意事项:
- 三台 JMeter Slave 都是在 Linux( Ubuntu 22.04.1 LTS ) 服务器上搭建。
- 需要确保 Server 和 Salve 之间的时间是同步的。
- 需在内网配置 JMeter 主从通信端口【1个固定,1个随机】,简单的配置方式就是关闭防火墙,但存 在安全隐患。
1.1 在 Window 系统中搭建部署 JMeter Master
- 与Window中安装JMeter一样简单,略
1.2 Linux 部署 JMeter Salve
下载解压安装包命令
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.6.3.tgz
tar -zxvf apache-jmeter-5.6.3.tgz
mv apache-jmeter-5.4.1 ./apache-jmeter-5.6.3-salve
修改配置文件和主机的 hostname
# 修改ip
vim jmeter-server
# RMI_HOST_DEF=-Djava.rmi.server.hostname=本机ip
# 改端口
vim jmeter.properties
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099
# To change the default port (1099) used to access the server:
server.rmi.port=1098
配置关闭server.rmi.ssl
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
启动jmeter-server服务
nohup ./jmeter-server > ./jmeter.log 2>&1 &
1.3 分布式环境配置
确保 JMeter Controller 和 Salve 安装正确
Salve启动,并监听1099端口
在JMeter Controller 机器安装目录bin下,找到jmeter.properties文件,修改远程主机选项,添加3个 Salve服务器的地址
remote_hosts=192.168.1.18:1099,192.168.1.19:1099,192.168.1.20:1099
启动jmeter,如果是多网卡模式需要指定 IP 地址启动
jmeter -Djava.rmi.server.hostname=192.168.1.218
验证分布式环境是否搭建成功
3. Java 容器服务优化
为什么对 SpringBoot 嵌入式的 Tomcat 进行调优?
基于应用性能瓶颈分析得出结论,当响应时间比较长时,系统瓶颈主要存在与Tomcat中! 系统异常率较高,与Tomcat内部IO模型有关系【多线程&网络编程】
赞助
Powered by Waline v3.5.0