如果我认为内存或磁盘空间有限导致崩溃,在日志文件中查找什么

xti*_*ian 3 logs terminology

对最近一系列崩溃的 /var/log 文件进行故障排除,如果我认为内存或磁盘空间不足是罪魁祸首,我应该在文件中查找什么?在 Linux 抛出错误的行话中是否有一个通用术语用于描述此类硬件故障?并且,内存严重短缺会影响哪些系统进程,例如内核?


作为背景,当我遇到这些系统崩溃时,我正在我的 Fedora 17 沙箱项目笔记本电脑上托管的 Drupal 站点上工作。最近我下载了一些相当大的文件(我已经转移到媒体上)并且只有大约 1.8G 的高清空间。

我在这里找到了一些关于top使用du. 但是,这个问题专门针对日志文件。我在Fedora 论坛上找到了一个类似的帖子,正在寻找FPrintObject导致我进行 Memtest的解释,但那里没有任何不好的报道。

jor*_*anm 5

在通常的 syslog 日志中找不到您要查找的信息。要从命令行查看性能历史记录,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
Run Code Online (Sandbox Code Playgroud)

您看到的信息与 提供的信息相同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
Run Code Online (Sandbox Code Playgroud)

除了在本地运行 sar 之外,还有许多监控系统可以显示性能趋势数据。Munin、cacti 和 zabbix 就是一些例子。这些具有将多个服务器的数据绘制并保存在一个集中位置的好处。

更新以从评论中回答:

sar命令会告诉您在崩溃之前您是否用完了 RAM。这将是显而易见的,因为 kbbuffers 和 kbcached 将急剧下降。您还可以检查 dmesg 是否存在 OOM(内存不足)杀手,但如果安装了 klogd,dmesg 只会写入日志。您不会看到任何有关磁盘空间不足的日志,除非应用程序特别报告其写入磁盘失败。但是,如果磁盘已满,syslog 也无法将日志写入磁盘。