服务器资源一般就是: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决定数据流通能力