我在 Linux 服务器上运行一个应用程序。但服务器突然停止响应,但当我从其他机器 ping 服务器时,它允许 ping 但不允许登录服务器。不知道为什么?
设想:
- 应用程序和服务器均运行良好。
- 在特定时间,它似乎没有响应,因为我们无法登录服务器,但我们可以从其他机器 ping 该服务器。
- 由于它不允许我们登录服务器,我们重新启动了服务器,然后我们才能登录。
现在的问题是,我们不确定为什么会发生这种情况。我们尝试查看/var/log/messages
文件并发现以下可疑消息:
kernel: VFS: file-max limit 100000 reached
有人能帮我们检查一下哪些进程占用了这么多描述符吗?有没有日志文件可以让我们找到哪个进程占用了这么多的描述符?
如果需要更多信息,请告诉我。
谢谢
答案1
该消息表明机器文件句柄不足,请检查当前值并尝试增加该值。
List the current max-limit
#cat /proc/sys/fs/file-max
要增加文件数量(对于整个系统),请将以下行添加到 sysctl.conf(/etc/sysctl.conf)
fs.file-max = 131072
运行以下命令重新读取配置文件
sysctl -p
file-max 中的值表示 Linux 内核将分配的最大文件句柄数。当您收到大量有关文件句柄用尽的错误消息时,您可能需要增加此限制。尝试分配比 file-max 更多的文件描述符时,会报告错误“VFS:已达到 file-max 限制。
我不认为有日志可以告诉我们哪个进程打开了最大文件描述符