假如CPU占用较高,环境变慢,如何分析和定位?

假如CPU占用较高,如何分析和定位?

答: 需要JDK命令&Linux命令结合分析

  1. top定位CPU占比较高的进程;
  2. ps -ef 或者 jps 进一步定位,找出后台对应运行的程序  <—— ps -ef|grep java| gerp -v grep   或者   找出java进程 <——>jps -l
  3. 定位到具体线程或者代码 ps -mp 进程号 -o THREAD, tid, time
  4. 将需要的线程ID 转换为十六进制格式(英文小写格式) <—— printf %x\n  有问题的线程的ID
  5. jstack 进程ID | grep tid(十六进制线程ID小写英文) -A60              A60<——> 打印前60行

第5步定位代码行号

生产环境变慢,你的思路和性能评估?

整机: top

CPU: vmstat

内存: free  <—— free m

硬盘: df  <—— df -h

磁盘IO: iostat    <——  iostat -xdk 2 3  

网络IO: ifstat

 

假如CPU占用较高,环境变慢,如何分析和定位?

top

主要查看%CPU%MEM,还有load averageload average后面的三个数字,表示系统1分钟、5分钟、15分钟的平均负载值。如果三者平均值高于0.6,则 负载比较高了。当然,用uptime也可以查看。

load average 高于60% 负载就很高了

查看CPU核心信息:

假如CPU占用较高,环境变慢,如何分析和定位?

vmstat

查看进程、内存、I/O等多个系统运行状态。2表示每两秒采样一次,3表示一共采样3次。procsr表示运行和等待CPU时间片的进程数,原则上1核CPU不要超过2。b是等待资源的进程数,比如磁盘I/O、网络I/O等。

假如CPU占用较高,环境变慢,如何分析和定位?

假如CPU占用较高,环境变慢,如何分析和定位?

所有核信息,每2秒采样一次并打印

假如CPU占用较高,环境变慢,如何分析和定位?

 

free 查看内存信息

假如CPU占用较高,环境变慢,如何分析和定位?

假如CPU占用较高,环境变慢,如何分析和定位?

pidstat -p 进程号 -r 采样间隔秒数

假如CPU占用较高,环境变慢,如何分析和定位?

iostat -xdk 2 3

假如CPU占用较高,环境变慢,如何分析和定位?

pidstat -d 2 -p 进程号

假如CPU占用较高,环境变慢,如何分析和定位?

安装ifstat

假如CPU占用较高,环境变慢,如何分析和定位?

查看网络IO

ifstat 秒数

假如CPU占用较高,环境变慢,如何分析和定位?