如何查看Docker容器内部使用的线程数量?docker container top是否支持该功能?
Docker容器线程数查看方法说明
1. docker container top的线程查看能力
docker container top的设计是直接把用户传入的额外参数透传给宿主机的ps命令,默认输出仅展示进程列表,没有单独的线程数统计结果,但可以通过传入ps的线程相关参数实现线程查询:
- 查看容器内所有线程明细:执行
docker container top <容器ID/容器名称> -L,输出里的LWP字段是线程ID,NLWP字段是对应进程持有的线程总数 - 快速统计容器总线程数:执行
docker container top <容器ID/容器名称> -L | wc -l,得到的结果减去1(减去表头行的计数)就是当前容器的总线程数
注意:上述逻辑仅适用于Linux容器,Windows容器不兼容该参数用法。
2. 其他原生可用的线程数查看命令
不用依赖第三方工具,还有几种官方原生的查看方式可选:
- 进入容器内部查询
首先通过docker exec -it <容器ID/容器名称> sh(或bash,根据容器内置shell决定)进入容器终端,执行以下任意命令即可:- 统计总线程数:
ps -eLf | wc -l,结果减1就是容器当前总线程数 - 查看指定进程的线程数:读取proc文件系统即可,执行
cat /proc/<目标进程PID>/status | grep Threads,会直接返回该进程的线程数,把PID替换成self可以查看当前shell进程的线程数
- 统计总线程数:
- 宿主机侧无需进入容器查询
先执行docker inspect -f '{{.State.Pid}}' <容器ID/容器名称>,拿到容器在宿主机上对应的主进程PID,之后执行cat /proc/<刚才拿到的PID>/status | grep Threads,就能直接得到容器主进程的线程数,统计所有容器子进程的线程数相加即可得到容器总线程数。
内容的提问来源于stack exchange,提问作者HeronAlgoSearch
相关产品推荐
相关产品推荐

