当前位置: 代码网 > 服务器>服务器>Linux > Linux中的最大线程数和句柄数详解

Linux中的最大线程数和句柄数详解

2025年04月16日 Linux 我要评论
linux最大线程数和句柄数最近有用户反馈登录centos 7系统后执行任意命令,报错:bash: fork:retry: no child processesbash: fork: resource

linux最大线程数和句柄数

最近有用户反馈登录centos 7系统后

执行任意命令,报错:

bash: fork:retry: no child processes
bash: fork: resource temporarily unavailable

看到这个怀疑是系统ulimit 限制导致的。

于是查看 /etc/security/limits.conf 和 /etc/security/limits.d/20-nproc.conf

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4
*       soft    nofile  327680
*       hard    nofile  327680

# end of file

在centos 7中

ulimitnproc参数限制的是用户可创建的进程和线程的总数。

这是因为在linux内核中,线程是通过轻量级进程(lwp)实现的,每个线程会占用一个进程号(pid),因此会被计入nproc的限制范围

# default limit for number of user's processes to prevent
# accidental fork bombs.
# see rhbz #432903 for reasoning.

*          soft    nproc     4096
root       soft    nproc     unlimited

发现系统默认除了root 用户默认最多的进程+线程总数最大是4096,所以是不是用户启动了过多进程或线程呢。

于是通过 top 以及 top -h 查看系统进程数 300+ 和线程数 4100+,发现top -h 发现用户启动了过多的线程,由此定位到了原因。

补充

排查用户占用的线程数可以通过如下命令获取

1. ps

#ps -u <username> -l | wc -l

2. top

#top -h

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com