开发者社区> 问答> 正文

Linux系统进程关联线程数统计及调整说明

Linux系统进程关联线程数统计及调整说明

展开
收起
278835030529486151 2019-07-11 16:31:19 849 0
1 条回答
写回答
取消 提交回答
  • 进程关联线程数统计说明

    Linux 系统下,可以通过以下三种方式查询应用程序(进程)创建了多少线程(thread)。

    通过 /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 目录下的目录数判断线程数量
    进程每创建一个线程,系统会在 /proc/$PID/task 目录下创建一个子目录,目录名即为线程 ID。通过统计相应进程对应 task目录下的子目录数量即可统计出线程数量。操作说明如下。
    首先,同样的,参阅前述说明,通过 ps 等指令,查询目标进程的进程 ID(PID)。
    然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数:
    格式:
    ls /proc/$PID/task | wc -l
    示例:
    $ ls /proc/874/task | wc -l
    # 返回的数值即为相应进程创建的线程数。

    通过 ps 命令统计线程tgps
    通过 ps 指令也可以统计进程关联线程数。说明如下。
    首先,同样的,参阅前述说明,通过 ps 等指令,查询目标进程的进程 ID(PID)。
    然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数:
    格式:
    ps hH p $PID | wc -l
    参数说明:
    -h 表示不显示标题
    -H 表示显示进程的层级关系
    $PID 是相应进程的进程号

    示例:
    $ ps hH p 874 | wc -l

    # 返回的数值即为相应进程创建的线程数。

    Linux 系统无法创建线程错误原因及解决方法

    • 问题描述:  业务软件或系统日志中可能出现类似如下日志信息:   unable to create new native thread
    • 问题分析:  出现该错误,通常是由于系统无法创建更多进程所致。可以使用如下指令查看当前系统最大可创建线程数。
      指令:
      • ulimit -a | grep
      • 示例输出:
      • $ ulimit -a | grep 
      • processesmax user processes (-u) 7812# max user processes  
    • 右侧的数值即表示当前单用户可创建的最大线程总数
    • 处理办法:  根据操作系统的不同,可以参阅 该文档修改系统配置文件,调整最大可创建进程数。

    2019-07-22 11:31:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载