Why
- 用户体验
- 用户留存
- 运营成本
- 硬件成本
- 边际成本
What
- 响应慢
- 单机容量低
- 并发能力弱
How
数据驱动
- 定性
- 定量
- 诊断工具
系统诊断
- 热点
- 切分阶段,快速定位。
Example
单机容量低
- CPU ?
- 判断
- load
- cpu useage
- cpu steal
- 定位
- top
- stack
- 分析
- profile tool
- 判断
内存
- 判断
- mem指标
- swap
- 语言相关参数
- 定位
- 各种内存诊断工具
- 分析
- toll
- 判断
网络
- 判断
- net.if socket异常
- 定位
- netstat
- iftop
- 判断
- CPU ?
响应慢
- 下游依赖慢: db,cache,service
- 调用链分析
- 同步调用(大量同步调用其他服务接口)
- 调用链 + 定量评估
- 异步化
- 逻辑实现:循环调用,本地方法耗时?
- profiler 查热点。
- 下游依赖慢: db,cache,service
- 并发弱
- 资源瓶颈: 线程池,连接池
- 保证线程池大小与CPU数量挂钩。
- 资源竞争: cpu切换,锁
- 异步化,降低 context switch
- 资源瓶颈: 线程池,连接池