如何在 Linux 上查找哪个线程cpu利用率最高?可以用 top 命令看
1.找出cpu耗用厉害的进程pid,终端执行top命令 , 然后按下shift p (shift m是找出消耗内存最高)查找出cpu利用最厉害的pid号
2.根据上面第一步拿到的pid号 , top -H -p pid。然后按下shift p,查找出cpu利用率最厉害的线程号,比如top -H -p 1328
3.将获取到的线程号转换成16进制,去百度转换一下就行
4.使用jstack工具将进程信息打印输出,jstack pid号/tmp/t.dat,比如jstack 31365/tmp/t.dat
5.编辑/tmp/t.dat文件,查找线程号对应的信息
linux 怎样查看一个进程的线程方法一:PS
在ps命令中 , “-T”选项可以开启线程查看 。下面的命令列出了由进程号为pid的进程创建的所有线程 。
$ ps -T -p pid
“SID”栏表示线程ID,而“CMD”栏则显示了线程名称 。
方法二: Top
top命令可以实时显示各个线程情况 。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程 。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关 。
$ top -H
要让top输出某个特定进程pid并检查该进程内运行的线程状况:
$ top -H -p pid
方法三: Htop
一个对用户更加友好的方式是 , 通过htop查看单个进程的线程,它是一个基于ncurses的交互进程查看器 。该程序允许你在树状视图中监控单个独立线程 。
要在htop中启用线程查看,请开启htop , 然后按F2来进入htop的设置菜单 。选择“设置”栏下面的“显示选项”,然后开启“树状视图”和“显示自定义线程名”选项 。按F10退出设置 。
Linux最大线程数限制及当前线程数查询查看系统允许的最大线程数:
Linux无法直接控制单个进程可拥有的线程数,但有参考公式max = VM/stack_size,默认stack为8k , 可通过降低stack大小或增加虚拟内存来调大每个进程可拥有的最大线程数;
对于支持多线程的程序如Java,有可能会遇到一个进程无法创建更多线程的情形,其原因多种多样,而OS端可能由此参数造成.
查看系统允许的最大进程数:
ulimit -a 显示当前所有的资源限制
root用户下执行 ulimit -a 然后查看 max user processes这个值通常是系统最大线程数的一半:/proc/sys/kernel/threads-max/2
普通用户下 ulimit -u出现的max user processes的值 默认是 /etc/security/limits.d/20-nproc.conf(centos6 是90-nproc.conf)文件中的
普通用户默认是1024
打开/etc/security/limits.conf (部分的系统是在/etc/security/limits.d/90-nproc.conf)
设置限制数量,第一列表示用户,* 表示所有用户
soft nproc :单个用户可用的最大进程数量(超过会警告);
hard nproc:单个用户可用的最大进程数量(超过会报错);
soft nofile:可打开的文件描述符的最大数(超过会警告);
hard nofile :可打开的文件描述符的最大数(超过会报错);
重启后生效
reboot
查询当前某程序的线程数
pstree -p 进程号 | wc -l
管道符号"|"左边命令的输出作为右边命令的输入
直接修改/etc/security/limits.conf文件中的 *softnproc65535值后 , 普通用户最大进程数无法达到65535,因为用户的maxuser processes的值 , 最后是受全局的kernel.pid_max的值限制 。也就是说kernel.pid_max=1024,那么你用户的max user processes的值是127426 ,用户能打开的最大进程数还是1024 。
永久修改系统最高进程数的方法
在/etc/sysctl.conf中添加kernel.pid_max = 65535
vim /etc/sysctl.conf
kernel.pid_max = 65535
或者:
echo "kernel.pid_max = 65535"/etc/sysctl.conf
然后重启机器 。
临时修改的方法:
echo 65535/proc/sys/kernel/pid_max
所以以上都操作完成后,才算是正确修改了max user processes 的值
Linux上如何查看某个进程的线程1 。使用top命令,具体用法是 top -H
加上这个选项,top的每一行就不是显示一个进程 , 而是一个线程 。
2 。使用ps命令,具体用法是 ps -xH
这样可以查看所有存在的线程 , 也可以使用grep作进一步的过滤 。
3 。使用ps命令,具体用法是 ps -mq PID
这样可以看到指定的进程产生的线程数目 。
更进一步,其实一些系统监控工具 , 在本质上也是读取的系统产生的文件罢了 。比如说进程这个事情 ,
看看这个目录吧 , /proc/5000/ 这里面有你所有想要的 。其实stat代表着当前的一些信息 。
使用ps命令来查看进程的时候,进程状态分别对应的含义如下:
D 不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生
R 正在运行或可运行(在运行队列排队中)
S 可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
T 已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行
W 正在换页(2.6.内核之前有效)
X 死进程 (未开启)
Z 僵尸进程 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的
高优先级(not nice to other users)
N 低优先级(nice to other users)
L 页面锁定在内存(实时和定制的IO)
s 一个信息头
l 多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样)
在前台进程组
【linux线程查询命令 linux查询线程总数】linux线程查询命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux查询线程总数、linux线程查询命令的信息别忘了在本站进行查找喔 。
推荐阅读
- 离线的经营游戏,离线 游戏
- flutter和原生调用,flutter 调用原生view
- 关于pboraclesql语句的信息
- 视频号建直播间,视频号如何开直播
- 数据库封装类php python 数据库封装
- js实现3秒钟之后跳转,js怎么实现跳转
- 吉林省gis公司有哪些,吉林省测绘公司
- 体育课趣味游戏活动流程,趣味体育课小游戏
- mysql的路径怎么找 mysql bin路径