如何确定上周两小时资源占用高的原因?

如何确定上周两小时资源占用高的原因?

我知道有几种工具可以用来找出导致网络和 CPU 使用率过高的原因现在,但我时不时地会在服务器上检查日志,并注意到网络/CPU 活动非常频繁。最近一次发生在上周的某一天。

我怎样才能“回顾”并找出谁或什么在使用这些资源,而不是“当场抓住他们”?

我正在使用 Ubuntu 10.04。

答案1

如果没有完整的审计日志记录(每个进程的运行及其所消耗的资源),您真的无法做到。您能做的最好的事情就是查看所有计划的任务(cron作业、at作业)以及您可以分类的所有外部影响(其他系统上的计划作业、来自大老板的不寻常报告请求等),以做出有根据的猜测。

找出导致负载峰值的原因的最佳方法是实时监控/警报:系统会告诉您“现在我们遇到了问题”,以便您登录并确定原因。

答案2

除了资源监控可以查找整个系统的高 CPU 利用率时段外,您还可以设置监控来查找进程的长时间高 CPU 利用率。我为我的 Web 和 SQL 框(Linux 和 Windows)设置了类似的设置。

偶尔我会看到某个东西突然出现,并且单核使用率达到 100%。这不足以触发四核系统上直接查看 CPU 的警报,但足以引起注意。

答案3

有许多工具可以跟踪进程的累积 CPU 利用率和/或记录一段时间内的该值。如果你想要详细了解正在发生

  • 在通往服务器的线路上设置网络分接头(硬件分接头或端口镜像)。
  • 附加带有循环 pcap 文件的嗅探器(dumpcap 非常适合此用途)。

现在您有一个网络“黑匣子”,它将记录过去 X 分钟/小时的所有事件(取决于捕获文件的大小)。

  • 让此设置运行直至事件发生。
  • 停止捕获过程并检查数据包捕获。

查看完整的数据包转储将让您确切地了解正在发生的情况以及哪个端点正在请求它。对于难以确定的长期问题非常有用。当用户报告偶尔的故障并且日志没有显示任何内容时。

答案4

Ubuntu 应该已经为您安装了“systat”包,该包自动设置了一个 cron 作业,将所有系统指标(CPU/MEM/DISK...)保存到“/usr/lib/sysstat”,您只需使用 sar -u|-d|-? -f filename 读取历史数据即可

相关内容