面试官想听的
- 是否具备线上应急判断能力
- 是否会抓关键指标
- 是否能快速分析阻塞、死循环、GC
- 是否能快速定位线程情况
回答案例
首先我认为CPU飙升通常是两种情况,一类是近期线上变更,业务中存在一些骚操作;一类是机器异常,如果我作为故障处理人,一分钟内最关键的是找到原因和协助人。
-
如果是只是单机异常,则先禁用该台机器,观测指标是否仍存在异常情况。
-
如果大面积机器异常,第一时间考虑近期是否有线上变更,如有线上变更,第一时间就是找到协同处理人,协同分工先完成止损操作。
-
协同人先周知上级,我则立即开启回滚任务,快速扩容部署旧代码后,禁用有问题的线上机器。
-
然后是定位问题,可以按照以下指标进行排查。
- QPS是否有上涨,如果有上涨,先找到对应的上游一起处理,必要时进行限流、熔断、日志降级等操作。
- 查看GC频率,是否Full GC频繁,定位到是否存在内存泄漏、是否存在对象膨胀等问题
- 查看哪类线程占用CPU,看是死循环还是大量锁等待。
-
最后就是修复问题,通过hotfix来上线。
-
面试加分点
- 找到协同人、周知相关上下游,因为处理故障时,人是在高度紧张的状态下,很容易操作失误,另外在大厂会有很多流程规范,需要协同人为你做这些杂事。
- 限流、熔断、日志降级等操作,了解如何降低影响。