如下图所示,我的Linux机器挂了,无法登录。
根据控制台上的消息,如何识别“挂起”的原因?
我搜索了/var/log/messages
更多信息(但我迷失了方向,找不到任何有用的东西),但我不知道在哪里可以找到核心文件。
对于这种情况,我们可以在哪些其他文件中找到信息?
答案1
首先,试着看看你的特区发生此错误时的资源使用情况日志:
中央处理器:sar -u
您需要查看的两个主要列
%iowait
是%idle
高的
%iowait
和低的%idle
是 CPU 瓶颈的良好指标。
记忆:sar -r
- 检查该列
%memused
,但更重要的是检查%commit
。
加载:sar -q
- 检查负载数是否大于您所拥有的 CPU 数量(
cat /proc/cpuinfo | grep proc
)。
其次,也是最重要的一点,发生此错误的原因是将未完成数据刷新到磁盘的时间限制为 120 秒。默认情况下,Linux 最多使用 40% 的可用内存进行文件系统缓存。未完成数据将是超过此 40% 标记的所有数据。一旦超过 40% 标记,缓存将从异步写入(非阻塞后台操作,让进程继续)切换到同步写入(阻塞并让进程等待,直到 I/O 提交到磁盘)。如果 IO 子系统无法跟上并未能在 120 秒内刷新数据,则会发生此错误。
一个流行的解决方案是强制系统尽早冲洗。
您可以将以下内容添加到/etc/sysctl.conf
:
vm.dirty_ratio=10
(在刷新到磁盘之前可以用脏页填充的系统内存的绝对最大数量(在这种情况下为 10=10%))vm.dirty_background_ratio=5
(刷新前可用脏页填充的系统内存百分比)
我希望这可以帮助你!
答案2
您可以使用目录中的文件查看较旧的 sar 条目/var/log/sa
,使用与平常相同的命令,但添加-f /var/log/sa${day}
,我想在您的情况下是 22。