网站平台都有哪些,哪个网站上网好,家具设计用什么软件最好,网站推广公司经理职责功能问题#xff0c;通过日志#xff0c;单步调试相对比较好定位。 性能问题#xff0c;例如线上服务器CPU100%#xff0c;如何找到相关服务#xff0c;如何定位问题代码#xff0c;更考验技术人的功底。 58到家架构部#xff0c;运维部#xff0c;58速运技术部联合进行… 功能问题通过日志单步调试相对比较好定位。 性能问题例如线上服务器CPU100%如何找到相关服务如何定位问题代码更考验技术人的功底。 58到家架构部运维部58速运技术部联合进行了一次线上服务CPU问题排查实战演练同学们反馈有收获特将实战演练的试题和答案公布出来希望对大家也有帮助。 题目 某服务器上部署了若干tomcat实例即若干垂直切分的Java站点服务以及若干Java微服务突然收到运维的CPU异常告警。 问如何定位是哪个服务进程导致CPU过载哪个线程导致CPU过载哪段代码导致CPU过载 步骤一、找到最耗CPU的进程 工具top 方法 执行top -c 显示进程运行信息列表 键入P (大写p)进程按照CPU使用率排序 图示 如上图最耗CPU的进程PID为10765 步骤二找到最耗CPU的线程 工具top 方法 top -Hp 10765 显示一个进程的线程运行信息列表 键入P (大写p)线程按照CPU使用率排序 图示 如上图进程10765内最耗CPU的线程PID为10804 步骤三将线程PID转化为16进制 工具printf 方法printf “%x\n” 10804 图示 如上图10804对应的16进制是0x2a34当然这一步可以用计算器。 之所以要转化为16进制是因为堆栈里线程id是用16进制表示的。 步骤四查看堆栈找到线程在干嘛 工具pstack/jstack/grep 方法jstack 10765 | grep ‘0x2a34’ -C5 --color 打印进程堆栈 通过线程id过滤得到线程堆栈 图示 如上图找到了耗CPU高的线程对应的线程名称“AsyncLogger-1”以及看到了该线程正在执行代码的堆栈。 希望对经常进行线上CPU问题排查的同学有帮助如果有更好的实践也欢迎分享。 转载于:https://www.cnblogs.com/williamjie/p/9389284.html