如何在服务器上快速定位cpu或者内存使用率特别高的进程及运行在其上的线程

在服务器上排查cpu率使用高的进程时可以借用阿里的Arthas工具(特别好用),也可以只借助操作系统的命令,其实现步骤如下:

  • 第一步:采用top命令查看使用率高的进程:
    如何在服务器上快速定位cpu或者内存使用率特别高的进程及运行在其上的线程
    或者用jps查看系统中正在运行的java进程:
    如何在服务器上快速定位cpu或者内存使用率特别高的进程及运行在其上的线程
  • 第二步:查看属于一个进程中的所有线程的运行情况:top -H -p pid,找出最高的线程id。
    如何在服务器上快速定位cpu或者内存使用率特别高的进程及运行在其上的线程
    将十进制的线程号转为16进制。
    27808(十进制) —> 6ca0(十六进制)
  • 第三步:导出线程堆栈,查看所有线程运行情况:jstack pid > pid.tdump,在生成的文件中查找线程号,机找到是哪个线程占用较高的cpu或者系统资源了。
    如何在服务器上快速定位cpu或者内存使用率特别高的进程及运行在其上的线程

重要声明:该文章源于大哥(军神@干净的句号)在小组分享会中的分享,特别感谢!!!