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中
ulimit
的nproc
参数限制的是用户可创建的进程和线程的总数。
这是因为在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
您可能感兴趣的文章
- 06-17Linux进程信号的发送和保存方法
- 06-17Linux卸载自带jdk并安装新jdk版本的图文教程
- 06-17Linux系统中卸载与安装JDK的详细教程
- 06-17Linux系统配置NAT网络模式的详细步骤(附图文)
- 06-17Linux中的计划任务(crontab)使用方式
- 06-17Apache配置域名跳转的详细步骤
- 06-17Linux fsync系统调用方式
- 06-17Linux磁盘扩容lvm的使用详解
- 06-17Linux与Windows跨平台文件共享的实现方案
- 06-17Linux如何实现给/根目录扩容


阅读排行
推荐教程
- 05-27Linux命令学习总结之rmdir命令
- 05-27阿里云linux服务器安全设置(防火墙策略等)
- 05-10Ubuntu系统安装ANSYS2021R1
- 05-27SecureCRT中文显示乱码问题的解决方法
- 06-12linux系统SSL证书部署https单/多站点
- 05-10ANSYS2021R1安装方法Linux centos Ubuntu系统
- 05-27apache密码生成工具htpasswd使用详解
- 11-07Clash Linux服务器安装详细教程
- 05-27Apache下开启SSI配置使html支持include包含的方法
- 05-27Linux下大量SYN_SENT连接问题的解决方法