记录顶部输出的前 5 行 - 服务器冻结

记录顶部输出的前 5 行 - 服务器冻结

有人能给出一些关于如何从顶部输出记录前 5 行的提示吗?我在考虑使用 grep,但不知道如何选择行。

我需要了解。是什么原因导致服务器有时会冻结。也许有一些工具可以解决此问题?

谢谢 ;)

答案1

您可以通过以下方式执行您的请求:

~$ top -n1 | head -5

除了 Janne 的命令列表和 symcbean 建议检查系统日志外,我建议在顶上

   ...
   It  shows  the  occupation  of  the  most  critical  hardware
   resources (from a performance point of view) on system level, i.e. cpu,
   memory, disk and network.
   It  also  shows  which processes are responsible for the indicated load
   with respect to cpu- and memory load on process level.   Disk  load  is
   shown if per process "storage accounting" is active in the kernel or if
   the kernel patch `cnt' has been installed.  Network load is only  shown
   per process if the kernel patch `cnt' has been installed...

   [...]

   Every  interval  (default:  10  seconds) information is shown about the
   resource occupation on system level (cpu,  memory,  disks  and  network
   layers),  followed by a list of processes which have been active during
   the last interval (note that all processes that were  unchanged  during
   the  last interval are not shown, unless the key 'a' has been pressed).
   If the list of active processes does not entirely fit  on  the  screen,
   only the top of the list is shown (sorted in order of activity).

此外,使用 atop,您可以回溯检查服务器当时的情况,因为它将数据存储在日志文件中。例如,我在脚本中编写了以下代码片段,当服务器 loadavg 超过任意限制时,该脚本将启动。然后,atop 信息和其他相关系统信息将通过邮件发送到我的帐户:

atop -r /var/log/atop.log -M -b "$(date +'%H:%M' -d '30 minutes ago')" -e "$(date -d now +'%H:%M')"

基本上,我会得到一份有关服务器实际状态以及过去 30 分钟内发生的情况的报告(其中包含每 10 分钟间隔的详细信息)

答案2

首先,服务器冻结不太可能是由于用户进程造成的。其次,即使如此,它为什么会成为导致问题的前 5 个原因之一?

如果您已经检查了日志但什么也没发现,那么请尝试实施看门狗以将心跳写入日志 - 并检查系统是否真的冻结(而不是在远程访问时观察到暂停)。

冻结持续多长时间?频率如何?负载恢复时是否有波动?您在哪里观察到这些冻结?这是专用机还是虚拟机?

答案3

top | head -n 12 >>your_file.txt可以,但有警告:它也会保存所有控制字符和 ANSI 字符,因此使用lessetc 浏览输出不太好。而且,说实话,这几乎不是捕获反叛进程的最佳方法。

对于总体趋势有关服务器性能的工具(如 snmp+mrtg、Cacti 或 Munin)非常有用 - 它们可以绘制 CPU 使用率、内存使用率等图表。对于命令行,使用sysstat包及其sadc守护程序和sar报告实用程序还可以为您提供有关服务器运行情况的视图。psacct包添加了 BSD 记帐,可以为您提供有关每个用户/进程所用时间的总体统计信息。

实时查看只需登录您的服务器并按照诸如iostat -x 1vmstat和 之类的内容进行操作即可top

考虑设置单独的系统日志服务器如果您有备用硬件(或已安装中央系统日志服务器),请使用它!您只需配置服务器以将其系统日志和其他日志发送到系统日志服务器即可。有时可能会发生这些冻结(如果由内核崩溃引起),因此您的服务器无法将信息写入磁盘,但它能够将其最后的文字发送到系统日志服务器。

使用 memtest86 测试您的服务器如果您可以让服务器离线一晚左右,让其运行memtest86以查看是否存在 RAM 故障或其他问题。

抱歉,由于您实际上并没有告诉我们有关您的问题的详细信息,因此我无法提供更多帮助。

相关内容