对最近一系列崩溃的 /var/log 文件进行故障排除,如果我认为内存不足或磁盘空间不足,我应该在文件中查找什么内容?有没有一般术语Linux 中用于此类硬件故障的错误抛出术语?并且,哪些系统进程(例如内核)会受到内存严重短缺的影响?
作为背景,当我经历这些系统崩溃时,我正在我的 Fedora 17 沙箱项目笔记本电脑上托管的 Drupal 站点上工作。最近我下载了一些相当大的文件(我已经转移到媒体)并且硬盘空间减少到大约 1.8G。
我在这里找到了一些关于监视内存使用情况的有用帖子top
或当前磁盘使用情况du
。然而,这个问题具体是关于日志文件的。我在以下位置找到了类似的帖子费多拉论坛为了寻找解释,FPrintObject
我做了 Memtest,但没有报告有什么不好的地方。
答案1
在通常的系统日志中找不到您要查找的信息。对于从命令行查看性能历史记录,sysstat 是一个出色的工具。
使用 sysstat,可以sadc
收集系统信息并将其写入日志文件。日志文件是二进制格式,但是可以用命令查看sar
。
以下是不带选项的 sar 输出示例:
$ sar
09:15:01 AM CPU %user %nice %system %iowait %steal %idle
10:05:01 AM all 77.49 0.37 22.13 0.00 0.00 0.00
10:15:01 AM all 77.30 0.40 22.29 0.00 0.00 0.00
10:25:01 AM all 77.19 0.38 22.42 0.00 0.00 0.00
10:35:01 AM all 39.31 0.35 23.80 0.01 0.00 36.53
10:45:01 AM all 32.22 0.34 24.26 0.03 0.00 43.15
10:55:01 AM all 32.80 0.33 23.78 0.01 0.00 43.08
11:05:01 AM all 32.70 0.33 23.76 0.00 0.00 43.20
Average: all 63.90 0.39 22.79 0.00 0.00 12.91
您看到的信息与 提供的信息相同top
,但是是历史数据。您还可以查看有关 RAM、网络和磁盘利用率的详细信息。以下是 RAM 使用情况的示例:
$ sar -r
09:15:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
02:15:01 PM 457076 1357116 74.81 277876 810948 205520 5.40
02:25:01 PM 456836 1357356 74.82 277876 811168 205384 5.40
02:35:01 PM 456976 1357216 74.81 277876 811256 204728 5.38
02:45:01 PM 457036 1357156 74.81 277876 811368 204840 5.38
02:55:01 PM 456588 1357604 74.83 277896 811492 204924 5.38
Average: 332452 1481740 81.67 277720 793953 416953 10.96
除了在本地运行 sar 之外,还有许多监控系统可以显示性能趋势数据。 Munin、cacti 和 zabbix 就是一些例子。这些的好处是可以将多个服务器的数据绘制成图表并保存在一个集中位置。
更新评论中的答案:
该sar
命令会告诉您在崩溃之前是否耗尽了 RAM。这将是显而易见的,因为 kbbuffers 和 kbcached 将急剧下降。您还可以检查 dmesg 是否有 OOM(内存不足)杀手,但只有安装了 klogd 后,dmesg 才会写入日志。您不会看到任何有关磁盘空间不足的日志,除非应用程序专门报告其无法写入磁盘。但是,如果磁盘已满,syslog 也将无法将日志写入磁盘。