Linux 系统下,可以通过以下三种方式查询应用程序(进程)创建了多少线程(thread)。
通过 /proc/$PID/task 目录下的目录数判断线程数量 通过 ps 命令统计线程 通过 /proc/$PID/status 进行查看 首先,通过 ps 等指令,查询目标进程的进程 ID(PID):
# 以 ssh 进程为例
ps -ef | grep sshroot
874 1 0 May31 ? 00:00:01 /usr/sbin/sshd -Droot
3957 874 0 09:59 ? 00:00:00 sshd: root@pts/0root
3993 3959 0 09:59 pts/0 00:00:00 grep —color=auto ssh
# 第二列即为相应进程的 PID 号
然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数:
格式:cat /proc/$PID/status
示例:
$ cat /proc/874/status | grep
ThreadThreads: 1
# 说明当前该进程创建的线程数为 1
进程每创建一个线程,系统会在 /proc/$PID/task 目录下创建一个子目录,目录名即为线程 ID。通过统计相应进程对应 task目录下的子目录数量即可统计出线程数量。操作说明如下。 首先,同样的,参阅前述说明,通过 ps 等指令,查询目标进程的进程 ID(PID)。 然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数: 格式:
ls /proc/$PID/task | wc -l
示例:
$ ls /proc/874/task | wc -l
# 返回的数值即为相应进程创建的线程数。
通过 ps 指令也可以统计进程关联线程数。说明如下。 首先,同样的,参阅前述说明,通过 ps 等指令,查询目标进程的进程 ID(PID)。 然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数: 格式:
```js
ps hH p $PID | wc -l
参数说明:
-h 表示不显示标题
-H 表示显示进程的层级关系
$PID 是相应进程的进程号
示例:
```js
$ ps hH p 874 | wc -l
# 返回的数值即为相应进程创建的线程数。
问题描述: 业务软件或系统日志中可能出现类似如下日志信息: ```js unable to create new native thread
问题分析: 出现该错误,通常是由于系统无法创建更多进程所致。可以使用如下指令查看当前系统最大可创建线程数。
```js
指令:
ulimit -a | grep
示例输出:
$ ulimit -a | grep
processesmax user processes (-u) 7812# max user processes
右侧的数值即表示当前单用户可创建的最大线程总数 处理办法: 根据操作系统的不同,可以参阅该文档修改系统配置文件,调整最大可创建进程数。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。