linux主机资源不足问题处理
程序会报Too many open files的错误,是因为open files 数目不够
1、ulimit -a 或ulimit -n 查看当前最大打开的openfile数量
修改/etc/security/limits.conf文件(自上而下匹配)
file-max是内核可分配的最大文件数,nr_open是单个进程可分配的最大文件数,所以在我们使用ulimit或limits.conf来设置时,如果要超过默认的1048576值时需要先增大nr_open值(sysctl -w fs.nr_open=100000000或者直接写入sysctl.conf文件)。
- 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
- 单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
- nofile的soft limit不能超过其hard limit
- nofile的hard limit不能超过/proc/sys/fs/nr_open
su:resource temporarily unavailable 资源暂不可用
进程创建的时候存在real user和effective user两个属性,用ps命令统计的时候默认显示的是effective user的进程数,当进程的real user跟effective user不一致的时候会导致上面的命令统计的结果小于限制值。之前命令查看的是effective user,使用-U参数查real user为grid的用户
ps h -Led -o user | sort | uniq -c | sort -n
系统最大可打开进程数 cat /proc/sys/kernel/pid_max
临时配置 ulimit -u 8092
永久配置需修改/etc/security/limits.d/20-nproc.conf 文件中数值
注意:
如果配置的数值大于系统最大打开进程数,需修改系统内核参数
临时配置
sysctl -w kernel.pid_max=655351
永久配置
echo kernel.pod_max=655351 >> /etc/sysctl.conf
sysctl -p