跳到主要内容

性能测试

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向 yudao-cloud 项目的性能测试,系统性阐述性能测试的概念与意义,涵盖响应时间、吞吐量、并发用户数、资源利用率等关键指标;并结合项目现有技术栈与监控能力,给出基于 JMeter/Gatling 的接口测试方法、数据库与缓存专项测试要点、以及最佳实践与案例分析思路。文档内容严格依据仓库中实际配置与代码,确保可落地与可复现。

项目结构

yudao-cloud 采用微服务架构,核心由网关与多个业务模块组成,同时集成了 Nacos、Redis、MySQL、Kafka、TDengine 等中间件。项目通过 Docker 编排与 Nacos 配置中心实现服务发现与配置管理,便于在测试环境中快速搭建与切换。

Mermaid Diagram Code:

graph TB
subgraph "测试环境"
Net["Docker 网络"]
DC["docker-compose 编排"]
end
subgraph "服务与中间件"
GW["yudao-gateway 网关"]
SYS["system-server"]
INF["infra-server"]
DEV["device-server"]
LCH["launcher-server"]
BLK["blacklist-server"]
TSK["task-server"]
RUL["rule-server"]
REDIS["Redis"]
MYSQL["MySQL"]
TD["TDengine"]
KAF["Kafka"]
NAC["Nacos"]
end
Net --> DC
DC --> GW
DC --> SYS
DC --> INF
DC --> DEV
DC --> LCH
DC --> BLK
DC --> TSK
DC --> RUL
GW --> NAC
SYS --> NAC
INF --> NAC
DEV --> NAC
LCH --> NAC
BLK --> NAC
TSK --> NAC
RUL --> NAC
GW --> REDIS
SYS --> MYSQL
DEV --> TD
TSK --> TD
BLK --> KAF

图示来源

章节来源

核心组件

  • 网关与路由:统一入口,负责鉴权、路由与灰度发布。
  • 业务模块:系统、基础设施、设备、运营、黑名单、任务、规则等模块。
  • 中间件:Redis(缓存)、MySQL(业务数据)、TDengine(时序/日志)、Kafka(消息)、Nacos(注册与配置)。
  • 监控与可观测性:SkyWalking、Prometheus、Actuator/Micrometer、Druid、Grafana/Kibana 等。

章节来源

架构总览

下图展示 yudao-cloud 的微服务与中间件关系,以及测试环境下的典型部署形态。

Mermaid Diagram Code:

graph TB
Client["客户端/压测工具"] --> GW["yudao-gateway"]
GW --> SVC_SYS["system-server"]
GW --> SVC_INF["infra-server"]
GW --> SVC_DEV["device-server"]
GW --> SVC_LCH["launcher-server"]
GW --> SVC_BLK["blacklist-server"]
GW --> SVC_TSK["task-server"]
GW --> SVC_RUL["rule-server"]
SVC_SYS --> DB_MY["MySQL"]
SVC_DEV --> DB_TD["TDengine"]
SVC_TSK --> DB_TD
SVC_BLK --> MQ_KF["Kafka"]
GW --> CACHE_RD["Redis"]
MON["监控与可观测性"] --> GW
MON --> SVC_SYS
MON --> SVC_INF

图示来源

详细组件分析

1) 性能测试基础与指标

  • 响应时间:接口平均/分位响应时间(P50/P90/P99),衡量用户体验与系统延迟。
  • 吞吐量:每秒事务数(TPS)或请求数(RPS),反映系统承载能力。
  • 并发用户数:同时在线用户或并发连接数,体现系统并发处理能力。
  • 资源利用率:CPU、内存、磁盘 IO、网络带宽、数据库连接池、Redis 连接数等。
  • 错误率:HTTP 5xx、业务错误、超时等占比,评估稳定性。

[本节为通用概念说明,不直接分析具体文件]

2) 使用 JMeter 进行性能测试

  • 测试计划创建:新建测试计划,添加线程组(并发用户、 Ramp-up、循环次数)。
  • HTTP 请求配置:设置服务器地址(网关或模块直连)、端口、请求方法、参数、头部(如认证)。
  • 监听器:添加聚合报告、响应时间图、吞吐量图、错误率图等,用于结果汇总与分析。
  • 配置建议:先小并发预热,逐步阶梯式加压;关注错误率与响应时间拐点;记录资源指标。

[本节为通用流程说明,不直接分析具体文件]

3) 使用 Gatling 进行性能测试

  • 场景设计:基于 Scala DSL 编写请求场景,模拟真实用户行为(登录、查询、提交等)。
  • 并发模型:使用 Simulation 的并发策略,结合到达率/固定并发/阶梯式并发。
  • 报告分析:Gatling HTML 报告包含请求统计、响应时间分布、错误明细,辅助定位瓶颈。

[本节为通用流程说明,不直接分析具体文件]

4) 数据库性能测试

  • 慢查询识别:结合 Druid 监控面板与慢 SQL 统计,定位执行时间长、扫描行数多的 SQL。
  • 连接池监控:观察连接池活跃数、等待数、最大等待时间,评估池容量与超时策略。
  • 索引优化建议:基于执行计划与扫描行数,补充必要索引;避免全表扫描。
  • 专项 SQL 参考:仓库中提供 Druid 性能分析 SQL,可用于生成服务综合性能评分与慢 SQL 统计。

Mermaid Diagram Code:

flowchart TD
Start(["开始"]) --> Enable["开启 Druid 监控"]
Enable --> Collect["采集慢 SQL 与执行统计"]
Collect --> Analyze["分析执行计划与热点 SQL"]
Analyze --> Optimize["优化索引/SQL/分页/缓存"]
Optimize --> Verify["回归测试验证"]
Verify --> End(["结束"])

图示来源

章节来源

5) 缓存性能测试(Redis)

  • 指标关注:命中率、内存使用、连接数、命令耗时、过期/淘汰策略影响。
  • 压测策略:构造高命中与低命中场景,对比不同 TTL、序列化方式、热点键分布。
  • 结果分析:关注缓存穿透、击穿、雪崩的防护效果与资源消耗。

章节来源

6) 接口性能测试

  • 目标:响应时间、错误率、并发处理能力、限流与熔断表现。
  • 方法:JMeter/Gatling 设计典型业务场景(登录、查询列表、详情、提交),逐步加压。
  • 结果:以响应时间分布、错误率、资源使用率为依据,确定系统拐点与容量边界。

[本节为通用流程说明,不直接分析具体文件]

7) 监控与可观测性(测试期间)

  • Prometheus 服务发现:通过 Infra 模块的 PrometheusController 暴露服务发现接口,供 Prometheus 抓取。
  • Micrometer 指标:启用通用标签与指标导出,便于统一采集。
  • SkyWalking:Agent 注入与忽略路径配置,便于链路追踪与性能分析。
  • Druid:数据库连接池与 SQL 监控,定位慢查询与热点接口。
  • Grafana/Kibana:可视化展示与日志检索,辅助问题定位。

Mermaid Diagram Code:

sequenceDiagram
participant Prom as Prometheus
participant Infra as Infra 模块
participant Disc as DiscoveryClient
Prom->>Infra : GET /actuator/prometheus/sd
Infra->>Disc : 获取服务列表与实例
Disc-->>Infra : 返回实例列表
Infra-->>Prom : 返回服务发现目标

图示来源

章节来源

8) 测试环境搭建与配置

  • Docker 编排:使用 docker-compose 启动网关与各业务服务,映射端口,配置 Nacos 命名空间与服务发现。
  • 端口规划:系统模块默认端口在 application.yaml 中配置,测试时注意端口冲突。
  • SkyWalking Agent:通过环境变量注入,便于链路追踪与性能采样。
  • Nacos 配置:通过 application.yaml 的 config.import 机制加载公共与应用级配置。

Mermaid Diagram Code:

sequenceDiagram
participant Dev as 开发者
participant Compose as docker-compose
participant Nacos as Nacos
participant Svc as 业务服务
Dev->>Compose : 启动编排
Compose->>Nacos : 注册服务与拉取配置
Nacos-->>Compose : 返回配置
Compose->>Svc : 启动服务实例
Svc-->>Nacos : 上报健康状态

图示来源

章节来源

9) 测试数据与场景设计

  • 测试数据:构造与生产相似的数据规模与分布,避免极端偏态;对敏感字段做脱敏处理。
  • 场景设计:覆盖登录、查询、列表、详情、提交、批量操作等典型路径;叠加并发与错误注入。
  • 灰度与版本:结合网关灰度发布能力,验证不同版本实例的性能差异。

[本节为通用流程说明,不直接分析具体文件]

10) 性能瓶颈定位

  • 前端/网关:高并发下网关路由与鉴权开销;灰度负载均衡策略。
  • 业务服务:热点接口、数据库慢 SQL、缓存未命中、消息队列堆积。
  • 中间件:Redis 连接池、MySQL 连接池、Kafka 生产/消费延迟。
  • 容器与资源:CPU/内存/IO 争用,网络抖动。

[本节为通用流程说明,不直接分析具体文件]

依赖分析

  • 服务间依赖:各业务模块通过 Nacos 注册与发现,网关统一接入。
  • 中间件依赖:Redis 用于缓存,MySQL/TDengine 用于数据存储,Kafka 用于异步解耦,Prometheus/SkyWalking 用于可观测性。
  • 配置依赖:Nacos 提供统一配置中心,application.yaml 通过 config.import 加载。

Mermaid Diagram Code:

graph LR
GW["yudao-gateway"] --> Nacos["Nacos"]
SYS["system-server"] --> Nacos
INF["infra-server"] --> Nacos
DEV["device-server"] --> Nacos
LCH["launcher-server"] --> Nacos
BLK["blacklist-server"] --> Nacos
TSK["task-server"] --> Nacos
RUL["rule-server"] --> Nacos
GW --> Redis["Redis"]
SYS --> MySQL["MySQL"]
DEV --> TD["TDengine"]
TSK --> TD
BLK --> Kafka["Kafka"]

图示来源

章节来源

性能考量

  • 端口与网络:测试前确认端口映射与网络连通性,避免压测流量被拦截。
  • 缓存策略:合理设置 TTL、热点键保护、批量读写,降低数据库压力。
  • 数据库优化:索引、分页、只读副本、连接池参数调优。
  • 中间件容量:Redis/MySQL/Kafka 的连接池与队列长度,避免阻塞与堆积。
  • 监控与告警:在压测过程中持续观察关键指标,及时发现异常。

[本节为通用指导,不直接分析具体文件]

故障排查指南

  • 服务不可用:检查 docker-compose 启动日志、Nacos 注册状态、端口占用。
  • 接口错误:结合 SkyWalking 链路与 Druid SQL 监控,定位异常接口与慢 SQL。
  • 缓存异常:检查 Redis 连接数、内存使用、命令耗时与过期策略。
  • 指标缺失:确认 Prometheus 服务发现接口与 Micrometer 导出配置。

章节来源

结论

通过对 yudao-cloud 的架构与中间件配置进行梳理,结合项目内置的监控与可观测性能力,可以建立一套完整的性能测试体系:从测试环境搭建、测试场景设计、指标采集与分析,到瓶颈定位与优化闭环。建议在测试中重点关注网关与核心业务接口、数据库慢 SQL、缓存命中率与中间件容量,并以 Prometheus/Micrometer 与 SkyWalking 为抓手,形成可追溯、可复现的性能报告。

[本节为总结性内容,不直接分析具体文件]

附录

A. 测试环境端口与服务映射(参考)

  • system-server:默认端口 48081
  • infra-server:默认端口 48082
  • device-server:默认端口 48091
  • blacklist-server:默认端口 48096
  • launcher-server:默认端口 48097
  • gateway:默认端口 48080

章节来源

B. 监控入口与能力

  • Redis 监控:Druid 控制台、外部 Redis 监控面板
  • MySQL 监控:Druid 控制台
  • Prometheus 服务发现:/actuator/prometheus/sd
  • Micrometer 指标:通用标签与指标导出

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答