分布式集群压测+grafana+influxdb+Prometheus详细步骤

服务器测试的核心类型:

性能测试:评估响应时间、吞吐量(如TPS/QPS)、资源利用率(CPU/内存)

安全测试:模拟SQL注入、DDoS攻击等,验证防御机制。

可用性测试:检测系统持续服务能力(如故障切换、容灾恢复)。

负载测试、压力测试、大量数据测试的区别:

压力测试:施加远超正常负载(如10倍流量),探测系统崩溃点及恢复能力‌。

负载测试:模拟正常业务流量(如日活用户并发),验证系统在预期负载下的稳定性‌。

关键指标解析:

tps(每秒事务数):直接反应系统处理能力,值越高性能越优。

响应时间:用户请求到收到响应的耗时,合格线通常小于等于3秒。

错误率:压测中失败占比,一般小于0.5%。。

资源瓶颈:cpu大于70%,内存大于80%预示着要扩容。

  1. 性能测试核心流程
    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.性能测试中没有文档如何测试?

答:第一步抓取生产流量;第二步按二八原则聚焦核心接口;第三步基于历史故障补充异常流

相关推荐
何中应5 小时前
分布式事务的两种解决方案
java·分布式·后端
诸葛务农6 小时前
人形机器人——电子皮肤技术路线:光学式电子皮肤及MIT基于光导纤维的分布式触觉传感电子皮肤
分布式·机器人·wpf
心月狐的流火号8 小时前
分布式锁技术详解与Go语言实现
分布式·微服务·go
麦兜*10 小时前
【Prometheus】 + Grafana构建【Redis】智能监控告警体系
java·spring boot·redis·spring·spring cloud·grafana·prometheus
William一直在路上10 小时前
Grafana k6 性能测试
grafana·k6·perf-testing
秋已杰爱11 小时前
Redis分布式锁
数据库·redis·分布式
努力买辣条16 小时前
基于 Docker 的高可用 WordPress 集群部署:分布式 Nginx + Keepalived、MySQL 主从复制与 ProxySQL 读写分离
分布式·nginx·docker
川石课堂软件测试20 小时前
技术干货|使用Prometheus+Grafana监控Tomcat实例详解
redis·功能测试·单元测试·tomcat·测试用例·grafana·prometheus
tan77º1 天前
【Linux网络编程】分布式Json-RPC框架 - 项目设计
linux·服务器·网络·分布式·网络协议·rpc·json