TOO MANY OPEN FILES IN SYSTEM
现象:
/var/log/messages报错:
sshd[33686]: error: pipe(notify_pipe) failed Too many open files in system
cron[33687]: pam_systemd(crond:session): Failed to create session: Connection reset by peer
error: pipe(notify_pipe) failed Too many open files in system
cron[40205]: pam_systemd(crond:session): Failed to create session: Connection timed out
cron[40221]: pam_systemd(crond:session): Failed to create session: Input/output error
kernel: [2050280.453254] VFS: file-max limit 10240 reached
解决方案:(已验证)
lsof|wc -l #检查当前系统已经打开的文件数
cat /proc/sys/fs/file-max #查看系统设定的最大打开文件数
将两个数比较下,如果已经打开的比规定的多,那就执行下面操作
vi /etc/sysctl.conf #在最后一行添加fs.file-max = 一倍的数值
sysctl -p
cat /proc/sys/fs/file-max 临时生效,系统重启失效
#重启生效
ulimit -a #查看各个功能有无限制
数据段长度:ulimit -d unlimited #设置为无限制
最大内存大小:ulimit -m unlimited#设置为无限制
堆栈大小:ulimit -s unlimited #设置为无限制
CPU 时间:ulimit -t unlimited #设置为无限制
虚拟内存:ulimit -v unlimited #设置为无限制
未使用方案:
ulimit -n或者ulimit -a #查看当前系统允许打开的最大文件数(软限制的文件数,相当于是警告但系统仍然能登陆,还有个硬限制,文件数到了这个值系统就登录不进去了)
cat /etc/security/limits.conf #打开这个文件能看到以下信息,可以修改
* soft nofile 1024 #软限制打开文件的最大数
* hard nofile 10240 #硬限制打开文件的最大数
* soft noproc 1024 #软限制打开进程的最大数
* hard noproc 10240 #硬限制打开进程的最大数
echo "session required /lib/security/pam_limits.so" >> /etc/pam.d/login
echo "session required /lib/security/$ISA/pam_limits.so" >> /etc/pam.d/system-auth