欢迎来到IDC91站长网!
解决服务器各种技术问题,加微信uecomzsr

Linux

当前位置: IDC91 > 服务器教程 > Linux

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

时间:2025-06-17 08:34:37|栏目: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  -L | wc -l

2. top

#top -H

上一篇:Linux中的进程地址空间用法解读

栏    目:Linux

下一篇:Linux系统之col命令的使用

本文标题:Linux中的最大线程数和句柄数详解

本文地址:https://www.idc91.com/fuwuqizl/5052.html

广告投放 | 联系我们 | 免责申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

Copyright © 2023 IDC91.COM 版权所有晋ICP备17006296号