一.首先查看系统中各进程占用cpu和内存的信息,找出占用资源最多的进程Pid。
1.用top(获得进程的动态更新)命令查看 默认每5秒刷新一次,按照cpu使用率排行。输入M可以按照内存占用排行。查出占用cpu或内存比较高的进程Pid。
2.用ps(获得进程的当前快照)命令。查出占用cpu或内存比较高的进程Pid。
二.通过进程id查找该进程下面所有线程的信息,找出占用资源最多的线程的Tid。
1.用top top -H -p <pid>动态实时显示该进程下所有的线程的情况,找出占用资源最高的线程Tid。
2.用ps ps -T -p <pid>显示该进程下所有的线程的当前快照,找出占用资源最高的线程Tid。
三.查看该线程的堆栈信息。
<1>1.获取线程Tid的十六进制数 (printf "%X\n" Tid)linux中可以用这个命令获取转换成16进制后的数。
2.jstack Pid >> xxx.log 把进程的所有线程的堆栈信息打印保存到xxx这个文件中。
3.用sz命令从服务器导出这个文件,然后根据上面转化的16进制的线程Tid在文件中找到该线程的信息。
<2>1.获取线程Tid的十六进制数 (printf "%X\n" Tid)linux中可以用这个命令获取转换成16进制后的数。
2.jstack Pid直接在服务器上显示这个进程所有线程的堆栈信息。
3.jstack Pid |grep 442b -A 30 显示线程id为442b的线程的堆栈信息。442b为要查找的线程id的16进制。
linux运行中进程和线程分析
最新推荐文章于 2023-07-15 23:56:35 发布