在 CentOS 下使用 JMeter 进行分布式压测,核心思路是:
一台 Controller(控制机)+ 多台 Agent(执行机),由 Controller 统一调度。
java -version
若未安装:
yum install -y java-1.8.0-openjdk
cd /opt
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.6.3.tgz
tar -zxvf apache-jmeter-5.6.3.tgz
ln -s apache-jmeter-5.6.3 jmeter
vi /etc/profile
export JMETER_HOME=/opt/jmeter
export PATH=$JMETER_HOME/bin:$PATH
source /etc/profile
jmeter.propertiesvi $JMETER_HOME/bin/jmeter.properties
关键配置:
server.rmi.ssl.disable=true
(测试环境建议关闭 SSL)
jmeter-server
或后台运行:
nohup jmeter-server > jmeter-agent.log 2>&1 &
注意:Agent 默认端口 1099
jmeter.propertiesvi $JMETER_HOME/bin/jmeter.properties
配置 Agent 列表:
remote_hosts=192.168.1.11:1099,192.168.1.12:1099
server.rmi.ssl.disable=true
# 避免 Controller 也参与压测
# 不写 localhost
jmeter -n \
-t test.jmx \
-r \
-l result.jtl \
-e -o report
参数说明:
-r:调用所有 remote_hosts-n:非 GUI-l:结果文件-e -o:生成 HTML 报告jmeter
菜单:
Run → Remote Start → 选择 Agent
Run → Remote Start All
systemctl stop firewalld
# 或
firewall-cmd --add-port=1099/tcp --permanent
firewall-cmd --reload
hostname -i
若返回 127.0.0.1,需修改:
vi /etc/hosts
192.168.1.10 controller
Agent 启动时可指定:
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.11
修改:
server_port=6000
Controller
|
|-- Agent1 (CentOS)
|-- Agent2 (CentOS)
|-- Agent3 (CentOS)
如果你愿意,我也可以: