分布式集群压测+grafana+influxdb+Prometheus详细步骤
服务器测试的核心类型:
性能测试:评估响应时间、吞吐量(如TPS/QPS)、资源利用率(CPU/内存)
安全测试:模拟SQL注入、DDoS攻击等,验证防御机制。
可用性测试:检测系统持续服务能力(如故障切换、容灾恢复)。
负载测试、压力测试、大量数据测试的区别:
压力测试:施加远超正常负载(如10倍流量),探测系统崩溃点及恢复能力。
负载测试:模拟正常业务流量(如日活用户并发),验证系统在预期负载下的稳定性。
关键指标解析:
tps(每秒事务数):直接反应系统处理能力,值越高性能越优。
响应时间:用户请求到收到响应的耗时,合格线通常小于等于3秒。
错误率:压测中失败占比,一般小于0.5%。。
资源瓶颈:cpu大于70%,内存大于80%预示着要扩容。
- 性能测试核心流程
1.需求分析(业务指标转换技术指标、制定压测场景)----环境准备(独立测试环境配置,检验生产环境按1:4缩容,监控体系prometheus+Grafana的搭建)----脚本开发(参数化、关联、设置集合点)----测试执行(阶梯加压策略,异常注入测试)----结果分析(定位瓶颈并优化)
JMeter分布式压测配置示例:
控制机的功能:脚本分发,结果聚合;控制机的资源要求:低cpu消耗,高网络带宽
压力机功能:实际产生负载;压力机资源要求:高cpu和高内存配置。
通信机制:
RMI协议:默认端口1099(需确保防火墙开放)
数据流:控制机→发送指令→压力机→返回采样数据
压力机配置:
修改jmeter.properties
server_port=1099 # RMI通信端口
server.rmi.ssl.disable=true # 关闭SSL加密提升性能
remote_hosts=127.0.0.1:1099 # 默认本地,实际替换为压力机IP
启动压力服务(需指定本机IP)
jmeter-server -Djava.rmi.server.hostname=192.168.1.101
关键参数验证:
telnet 192.168.1.101 1099 # 控制机测试连通性
控制机配置:
修改jmeter.properties
remote_hosts=192.168.1.101:1099,192.168.1.102:1099 # 多台用逗号分隔
mode=Standard # 标准模式收集详细数据
启动测试(非GUI模式)
jmeter -n -t test_plan.jmx -l result.jtl -R 192.168.1.101,192.168.1.102或在bin目录下(脚本也在bin目录下)进入cmd界面运行命令:jmeter -n -t test_plan.jmx -l result.jtl -e -o report -r
常见问题解决方案:
1.连接拒绝错误:Connection refused to host: x.x.x.x
处理步骤:
检查压力机jmeter-server进程是否运行
验证防火墙规则:iptables -L -n | grep 1099
确认IP绑定正确:hostname -i显示IP需与配置一致
2.结果数据缺失的排查方案:
在控制机添加监听器:View Results Tree
检查压力机日志:jmeter-server.log中的ERROR条目
3.关闭防火墙或者开启权限
systemtcl stop firewall.server #关闭防火墙命令
chmod -R 777 apache-jmeter-5.6.3#不能执行,开启权限命令
Jmeter组件的应用:
事物控制器:聚合业务流,比如用来统计跨接口事物成功率。
吞吐量定时器:精准控制RPS,统计RPS需要多少并发线程。公式:线程数=RPSx平均响应时间
BeanShell后置:动态参数处理,比如用来处理加密接口。
Grafana+Influxdb+Prometheus监控结果及服务器资源
Grafana+Influxdb实时监控运行结果
grafana是可视化的图形展示平台
下载安装------启动服务(systemctl restart grafana-server)----关闭防火墙(systemctl stop firewalld.service)—浏览器访问:安装ip地址:3000 用户名和密码:admin
influxdb时序数据库:Jmeter将测试指标实时写入Influxdb,grafana从Influxdb中拉取数据,生成实时监控仪表盘
下载安装—启动服务(influxd &)----进入数据库(influx)
influxQL语句:
show databases;显示有哪些数据库
create database jmeterData;创建数据库保存jmter压测的数据
use jmeterData;使用数据库
show measurements;展示表
使用后端监听器把jmeter执行的数据写入到influxdb进行保存
influxdb中的数据加载到grafana中,通过grafana自动显示数据。
在浏览器中访问“安装ip地址:3000”,设置数据源+仪表盘
grafana+Prometheus监控服务器资源
需要在服务器中安装数据收集器node_exporter,然后Prometheus拉取收集器的数据通过grafana进行展示。
安装node_exporter:下载node_exporter压缩包上传到服务器进行解压------进入位置后启动服务(./node_exporter &),默认端口9100----浏览器中验证是否开启(http://安装node_exporter的ip地址:9100)
安装Prometheus:下载包传到安装位置解压----修改配置文件(Prometheus.yml)-----启动Prometheus服务,默认端口9090(./prometheus &)------去浏览器打开:(https://安装Prometheus的ip地址:9090)-----通过grafana自动展示数据(去grafana中设置数据源+仪表盘选12633)
注意:
1.node_exporter必须安装在需要监控的服务器上。
2.grafana建议安装在独立服务器上或与测试无关的机器上,避免占用被测系统,influxdb可安装在grafana安装的服务器上或独立服务器上,prometheus可安装在目标服务器上或grafana安装的服务器上。
3.Prometheus.yml的配置内容
-job_name:“node_exporte”
static_configs:
-targets:[“安装node_exporte的ip地址:9100”]
面试题:
1.性能测试中没有文档如何测试?
答:第一步抓取生产流量;第二步按二八原则聚焦核心接口;第三步基于历史故障补充异常流