ssh登录远程服务,忽然提示su: failed to execute /bin/bash: 资源暂时不可用,然后通过root账号登录服务器没有问题,但是使用su切换用户时,依然失败,提示上面的错误,搜索一下可能原因是线程数沾满,杀掉一些占用大量线程的进程即可;然后记录下linux下线程数的相关操作

I. 最大值查询

1. 最大进程数查询

1
cat /proc/sys/kernel/pid_max

个人阿里云机器(单核2g)上输出如下

1
32768

2. 最大线程数查询

1
cat /proc/sys/kernel/threads-max

阿里云机器输出如下

1
14566

3. 用户最大进程数

1
ulimit -u

输出

1
7283

II. JVM设置

java应用启动时,可以通过设置相关参数来限制

1
2
3
-Xms  #intial java heap size
-Xmx #maximum java heap size
-Xss #the stack size for each thread

III. 进程的线程数查询

1. 具体进程的线程数查询

想知道一个进程开辟了多少个线程,有两种姿势,常见的ps和pstree

1
ps -hH 进程号 | wc -l

或者使用

1
pstree -p 进程号 | wc -l

2. 获取所有java的线程总数

利用管道来做这个统计,如下

1
ps aux | grep java | awk '{print $2}' |  xargs -I {} pstree -p {} | wc -l

3. 查询当前用户所有线程数

不指定具体的进程号即可

1
pstree -p | wc -l

II. 其他

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

QrCode

知识星球

goals