Linux中的最大线程数和句柄数详解
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 <username> -L | wc -l
2. top
#top -H
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
利用VSCode进行远程Linux服务器、容器开发,达到ide开发项目的效果(最新推荐)
最方便、最开始的开发方式当然是在本地ide中,比如初学者在Windows电脑上使用pycharm来学习python、深度学习,或者使用devc++、visual studio等来编写c++项目,在本地ide中,可以浏览文件夹、查看文本和图片等,进一步还可以运行调试python、C++等项目2022-12-12
Linux运维工具Supervisor的安装使用(进程管理工具)
这篇文章主要介绍了Linux运维工具Supervisor的安装使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-02-02
CentOS6 配置Nginx,MySql,php-fpm开机启动的方法
这篇文章主要介绍了CentOS6 配置Nginx,MySql,php-fpm开机启动的方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-10-10


最新评论