衡山弟子_jfSN
06-25·市场·10年+
面试官:线上服务器CPU直接跑满100%,你第一时间该怎么排查?我:先敲top指令,查看整机整体CPU占用情况面试官:打开top界面,你最先盯哪几列数据?我:重点看us、sy、id三个数值,分清是业务程序占用,还是系统内核在消耗资源面试官:要是us用户态CPU占满,接下来怎么做?我:按P键按CPU使用率排序,揪出占用最高的进程,记下PID号面试官:锁定高占用进程后,怎么深挖具体问题?我:执行top -H查看该进程下所有线程,找到耗资源的线程,再导出jstack、pstack堆栈日志分析面试官:日常开发里,哪些情况会把用户态CPU拉满?我:代码死循环、**回收频繁、复杂正则大批量匹配、递归死循环,还有接口突然涌入大量请求、业务逻辑卡顿面试官:那sy内核态数值居高不下,该怎么排查解决?我:重点查系统调用、线程频繁切换,用vmstat看cs上下文切换数值,判断是不是大量线程抢锁造成阻塞面试官:iowait数值偏高是什么意思,该怎么排查?我:说明CPU空闲,一直在等待磁盘IO读写,用iostat、df、du查看磁盘读写压力与文件占用,大多是磁盘性能差、日志疯狂写入导致面试官:怎么快速分清是代码bug,还是服务器环境出故障?我:观察集群其他机器状态,只有单台异常就是代码问题;所有实例负载全都飙升,基本是环境、配置或者流量层面的问题面试官:线上业务不能轻易重启,你会怎么紧急止损?我:先给非核心接口限流降级,清理无用日志,结束掉异常轻量进程,优先保障核心业务正常运转面试官:问题处理完,如何找到根本原因防止再次出现?我:留存线程堆栈、GC日志、监控走势图,复盘代码缺陷、流量高峰、资源配置短板,优化代码同时调整服务器资源告警阈值面试官:简单梳理整套完整排查流程我:先查看整机负载,区分用户、内核、IO三类占用,定位异常进程和线程,分别排查代码与系统故障,紧急止损稳住业务,最后复盘优化杜绝重复故障
发布于 未知
5
2
3
未登录
友善发言
image-upload
评论
加载中