Linux线上问题定位
常见定位问题的方式有: 日志 系统状态 dump线程 今天用Linux命令一步一步来定位可能出现的问题程序。 1.打开linux terminal工具,敲入“top”命令如下图出现系统资源的占用情况 展示的信息太多、这里只看每个进程的cup性能信息:可能会出现3种情况。 ·第一种情况,某个线程CPU利用率一直100%,则说明是这个线程有可能有死循环。 ·第二种情况,某个线程一直在TOP 10的位置,这说明这个线程可能有性能问题(根据命令排序)。 ·第三种情况,CPU利用率高的几个线程在不停变化,说明并不是由某一个线程导致CPU 偏高。 方案 注意:如果是第一种情况,也有可能是GC造成,可以用jstat命令看一下GC情况,看看是不是因 为持久代或年老代满了,产生Full GC,导致CPU利用率持续飙高。 已经定位高cpu的PID了。 1.根据PID找到耗时高cpu的线程id,命令如下(还可把线程dump下来也可以) ps -mp pid -o THREAD,tid,time 2.拿到 tid(线程id),这里是10进制的,要转换成16进制的 printf "%x\n" 线程id 3.拿到线程id,打印线程的堆栈信息,找到出现问题的代码,命令: jstack pid | grep tid -A 30 有的在实验楼敲过,打完收工-累。 来源: CSDN 作者: TangDB。 链接: