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

我知道有几种工具可以用来查明是什么原因导致networking和CPU使用率过高,但是我经常在服务器上检查日志,注意到networking/ CPU活动时间非常长。 最近一次发生在上周的某一天。

我怎样才能“回头看”,找出谁或什么在使用这些资源,而不是“在行为中捕捉他们”?

我使用Ubuntu 10.04。

没有完整的审计日志logging(每个进程运行和它消耗的资源),你真的不能。 你可以做的最好的是审查所有计划的任务( cron工作, at工作)和所有你可以编目的外部影响(在其他系统上的预定工作,来自大老板的一个不寻常的请求报告等)有根据的猜测。

找出造成负载峰值的最好方法是实时监控/警报:一个系统告诉你“现在我们有问题”,以便您login并确定原因。

除了资源监视可以为整个系统寻找高CPU利用率的时期之外,您还可以设置监视,以便按进程查找高CPU使用率的长时间段。 我有这样的设置为我的networking和SQL框,Linux和Windows。

偶尔我会看到一些东西,并且使用单个核心的100%。 这不足以触发四核系统上的直接CPU的警报,但足以保证看看。

有很多工具可以跟踪进程的累积CPU利用率,并且/或者logging这个值随着时间的推移。 如果你想要细节的细节发生了什么

  • 在连接到服务器的线路上设置networking分路器(硬件分路或端口镜像)。
  • 附加一个嗅探器循环pcap文件(dumpcap非常适合这个)。

现在你有一个networking“黑匣子”,将logging过去X分钟/小时的所有事件(取决于捕获文件的大小)。

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

看到完整的数据包转储会准确地告诉您发生了什么,以及端点在询问什么。 很难确定慢性问题。 当用户报告偶然的失败,并且日志什么也不显示。

Ubuntu应该已经为你安装了“systat”软件包,软件包会自动设置一个cron作业来保存所有的系统指标(CPU / MEM / DISK …)到“/ usr / lib / sysstat”,你只需要读取历史数据用sar -u | -d | – ? -f文件名