Skip to content

11.7 性能调优 ​

概述

调优顺序:先观测、再定位、后调参。可观测面有三层:Prometheus 指标(宏观)、服务监控页(主机)、SQL debug 日志(微观)。本页给出常见瓶颈与对应手段。

调优顺序 ​

text
① /metrics 看哪类路由耗时高、错误率高
② 服务监控页看主机资源(CPU/内存/goroutine)
③ SQL debug 定位慢查询
④ 按瓶颈类型施加对应手段
⑤ 复测指标

数据库层 ​

症状手段
慢查询高频列补索引(idx_{表}_{列});核对是否 LIKE 前置通配
连接耗尽调 database 连接池(maxOpenConns/maxIdleConns/connMaxLifetime),核对应用与 MySQL 两侧
大分页深翻避免大 offset;业务上限 pageSize 500 已兜底
频繁字典查询字典缓存已内置;确认未被频繁 Refresh 打穿

应用层 ​

症状手段
goroutine 突增监控页观察趋势;排查泄漏(未收尾的 goroutine、阻塞 channel)
内存增长大查询/导出是否一次载入过大结果集(导出走流式/分批)
接口整体变慢看限流是否误伤、日志是否过度(logQuery 巨量)
日志盘涨校准 job.logRetentionDays;zap 轮转配置

缓存层 ​

  • Redis 命中率低 → 检查键 TTL 与失效策略
  • 降级内存模式 → 修复 Redis(多实例下内存模式语义退化)
  • 大 key 排查 → Info memory 分区 + 键空间抽样

限流与入口 ​

  • 公网收敛 rateLimit.limit(默认 120/min/IP 已可用)
  • Nginx 层配连接/速率限制作为第一道闸
  • 上传大小 maxSize 与 client_max_body_size 对齐,防大文件打内存

容量规划参考 ​

  • 无状态应用可横向扩(多实例共享 Redis/MySQL;限流计数 Redis 共享)
  • 读压力大优先加只读库/缓存,而非盲目加应用实例
  • 监控告警:按 route 维度配 P95 耗时与错误率阈值

相关 ​

小蚂蚁云团队 · 提供技术支持