“ 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及 Full GC 次数过多的问题. 当然,这些问题最终导致的直观现象就是系统运行缓慢,并且有大量的报警. 本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路. 对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出 jstack 和内存信息,然后重启系统,尽快保证系统的可用性. 这种情况可能的原因主要有两种: 代码中某个位置读取…
前言 作为后端开发工程师,当收到线上服务器CPU负载过高告警时,你会这么做?重启服务,忽略告警?不过在我看来一个合格的工程师是一定要定位到具体问题所在的,从而 fix 它.下面记录一下线上服务器 CPU 负载过高排查过程,把排查流程理清楚,以后遇到问题将会迅速定位到问题所在,快速解决. 什么样的场景会导致线上CPU负载过高? 代码层面常见的场景有: 程序陷入死循环,不停地消耗CPU 线程死锁,线程相互等待,导致假死状态,不停地消耗CPU 程序死循环场景 这里使用 JAVA 简单模拟程序死循环带来…
引言 不知道在大家面试中,有没有遇到这个问题 生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 这个问题分为两版回答! 高调版 对不起,我是做研发的,这个问题在生产上是不可能遇见的!因为研发是不可能直接操作生产服务器,如果贵公司研发能遇到这个问题,应该要反思一下自己的权限控制是否合理! 面试官心里活动:装13是不是,赶紧走! 低调版 这个问题我在生产上没碰到过,因为我们是没法直接操作生产环境的.只能说,在测试环境曾经遇见过.操作步骤如下,balabal…
生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题? 这个问题分为两版回答!高调版对不起,我是做研发的,这个问题在生产上是不可能遇见的!因为研发是不可能直接操作生产服务器,如果贵公司能出现这个问题,应该要反思一下自己的权限控制是否合理! 面试官心里活动:装13是不是,赶紧走! 低调版这个问题我在生产上没碰到过,因为我们是没法直接操作生产环境的.只能说,在测试环境曾经遇见过.操作步骤如下,balabala… 面试官心里活动:权限控制的不错,应该是在大厂呆过.…
知识点总结 ------------------------------------------------------------------------------------------------------------------- 步骤一:找到最耗cpu的进程 工具:top 方法: 执行top -c,显示进程运行信息列表 键入P(大写),进程按cpu使用率排序 步骤二: 找到最耗CPU的线程 工具:top 方法: top -Hp 20136,显示一个进程的线程信息列表 键入P,线程按…
不知道在大家面试中,有没有遇到这个问题: 生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 这个问题分为两版回答!高调版对不起,我是做研发的,这个问题在生产上是不可能遇见的!因为研发是不可能直接操作生产服务器,如果贵公司能出现这个问题,应该要反思一下自己的权限控制是否合理! 面试官心里活动:装13是不是,赶紧走! 低调版这个问题我在生产上没碰到过,因为我们是没法直接操作生产环境的.只能说,在测试环境曾经遇见过.操作步骤如下,balabala… 面试官心…
不知道在大家面试中,有没有遇到这个问题: 生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 这个问题分为两版回答! 高调版 对不起,我是做研发的,这个问题在生产上是不可能遇见的!因为研发是不可能直接操作生产服务器,如果贵公司能出现这个问题,应该要反思一下自己的权限控制是否合理! 面试官心里活动:装13是不是,赶紧走! 低调版 这个问题我在生产上没碰到过,因为我们是没法直接操作生产环境的.只能说,在测试环境曾经遇见过.操作步骤如下,balabala- 面…
问题:生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 下面给出两种系统下的排查步骤,都是一模一样的,只是命令稍有区别! 查消耗cpu最高的进程PID 根据PID查出消耗cpu最高的线程号 根据线程号查出对应的java线程,进行处理. 准备一行死循环代码: public class run (){ public static void main (String args[]){ int count = 0; while (count < 1) { co…
问题描述:服务器上部署了多个tomcat,即垂直切分的Web站点,记忆多个Java微服务,突然收到运维的cpu异常告警. 步骤一:找到最耗cpu的进程 工具:top 方法: 执行top -c,显示进程运行信息列表 键入P(大写),进程按cpu使用率排序 图示: 如上图,找到最耗CPU的进程PID20136 步骤二: 找到最耗CPU的线程 工具:top 方法: top -Hp 20136,显示一个进程的线程信息列表 键入P,线程按CPU使用率排序 由此找到最耗CPU的线程PID 步骤三:将线程PI…
案例: public class App { public static void main( String[] args ) { int a = 0; while (a < 100) { a *= 10; } } } 把上述代码放到项目中,打成jar包,然后丢到服务器上,使用java -jar xxx.jar命令运行jar包: 使用 top -c  查看cpu情况: 使用 top -Hp 126018 查看一个进程的线程运行信息列表,可按下P,进程按照cpu使用率排序 上图pid是十进制的数据…