服务器资源一般就是:cpu,内存,磁盘,网络,内核调度资源

cpu(计算资源)

作用:

  • 业务逻辑执行(json解析,加密,排序,业务计算)
  • 并发调度(goroutine/线程切换)

关键指标:

  • cpu使用率
  • load average
  • 上下文切换次数

瓶颈表现:

  • 请求延迟上升但是io不高
  • load飙升
  • gc时间边长

内存

作用:

  • 对象缓存(redis本地缓存/Go map)
  • 请求临时数据
  • GC管理堆

关键指标:

  • RSS/Heap size
  • GC次数与STW时间
  • OOM(内存溢出)

瓶颈表现:

  • GC频繁
  • 延迟抖动
  • swap使用

磁盘

作用:

  • Mysql/Redis持久化
  • 日志写入
  • 文件存储

关键指标:

  • IOPS
  • read/write latency
  • disk queue length

瓶颈表现:

  • SQL慢查询
  • 日志写入卡顿
  • 数据库响应变慢

网络

作用:

  • HTTP/RPC请求
  • 微服务请求
  • 外部API调用

关键指标:

  • 带宽
  • RTT
  • 丢包率

瓶颈表现:

  • 接口延迟高但是CPU/IO正常
  • 请求超时
  • upstream卡顿

调度资源

包括:

  • 线程数限制
  • goroutine调度(gmp)
  • epoll事件循环
  • 进程上下文切换

瓶颈表现:

  • goroutine堆积
  • 线程爆炸
  • cpu idle但任务不执行

隐形资源

文件描述符

  • 每个连接一个FD
  • linux默认限制1024/65535

连接资源

  • tcp连接数
  • timewait/closewait

数据库连接池

  • mysql max connextions
  • redis connection pool

cpu决定计算能力

内存决定并发缓存能力

io决定数据流通能力