1、周一早上接开发人员告警说服务器无法登录,通过堡垒机登录,显示服务器异常kernel: VFS: file-max limit 65535 reached处理_file-max
2、第一时间重试开发人员登录,使用root可以登录,其他账户无法登录,查看/var/log/message日志,报错kernel: VFS: file-max limit 65535 reachedkernel: VFS: file-max limit 65535 reached处理_file-max_02
紧急处理:
编辑 /etc/sysctl.conf,将fs.file-max=65535 改成这个fs.file-max=6553500;
重试其他账户,可以登录成功,业务回复
3、排查
使用lsof命令查看各应用进程打开文件数量并进行统计取前10位;
lsof -n | awk ‘{print $0}’ | sort | uniq -c | sort -nr | head -10kernel: VFS: file-max limit 65535 reached处理_file-max_03
发现第一个进程id 2020打开文件数量达到惊人的32W
继续使用lsof命令查看进程id 2020
lsof -p 2020
查看到打开的全是sock文件,反馈开发后,开发排查发现是业务系统调用数据库失败,一直再重试;

思考:
当出现kernel: VFS: file-max limit 65535 reached,root用户为何可以登陆系统?
解释:
因为 root 用户在 Linux 系统中拥有最高的权限,可以执行任何操作,包括超出资源限制的操作。因此,即使系统达到了文件数量限制,root 用户仍然可以登录系统并执行必要的操作,例如释放不必要的文件描述符或增加文件描述符限制。但是,即使 root 用户也受到了其他资源限制的影响,例如内存限制、CPU 使用限制等。如果系统达到了这些限制,即使是 root 用户也可能无法执行某些操作。