1、周一早上接开发人员告警说服务器无法登录,通过堡垒机登录,显示服务器异常 image.png 2、第一时间重试开发人员登录,使用root可以登录,其他账户无法登录,查看/var/log/message日志,报错kernel: VFS: file-max limit 65535 reached image.png 紧急处理: 编辑 /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 -10 image.png 发现第一个进程id 2020打开文件数量达到惊人的32W 继续使用lsof命令查看进程id 2020 lsof -p 2020 查看到打开的全是sock文件,反馈开发后,开发排查发现是业务系统调用数据库失败,一直再重试;

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