高负荷平均值,我应该什么时候担心?

我有一个同时运行几百个进程的服务器,其中大部分都是空闲的,它是某种networking爬虫,因为各种原因在请求之间hibernate。

因此,我的平均负荷通常是:21.64,27.05,29.16

这是非常非常高的权利? 但一切顺利!

和我的CPU消费是像(mpstat 60 1输出):

11:07:06 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:08:06 AM all 34.82 0.00 4.16 10.70 0.00 0.31 0.00 0.00 0.00 50.01 Average: all 34.82 0.00 4.16 10.70 0.00 0.31 0.00 0.00 0.00 50.01 

所以,因为我甚至没有100%的CPU使用率,所以我觉得我没有理由担心,或者我错过了什么? 当nginx提供服务请求时,会有一些延迟,但这是因为有大量的排队请求,但是我在某处读取的平均负载超过1会导致警报,我真的不明白这是为什么。

所以请指教。

谢谢

高于1的平均负载是指1个核心/线程。 所以一个经验法则是平均负载等于你的核心/线程是可以的,更多的可能会导致排队的进程,并放慢速度。

例如, Iowait也被计入负载平均值,一个正在执行繁重IO的进程可以将负载平均值推到1以上,而不使用第二个内核/线程。
虽然这个繁重的IO进程可能会有不好的响应时间,但是第二个进程可能对高负载非常敏感。 取决于进程正在访问的资源。

只是担心,如果它实际上对应一个缓慢的应用程序

更准确地说,平均负载与正在运行或等待的进程数有关。 这可以比1多得多,performance得很好。 具有24个核心的主机上的平均负载为21将具有空闲的CPU,即使这些进程运行100%。 1很多的build议可能来自谁没有看到大或繁忙的主机的人。

iowait是应用程序的延迟,但在现代存储系统中,CPU可以有效地执行其他任务。

监视您的应用程序的响应时间。 将其与您的其他监测相关联,以查看实际上指示事情缓慢的事实。

你应该收集更多的信息来获得更好的意义。 此外,您的文章缺乏的细节,如什么样的服务器,哪个Linux分布,你有多lessCPU /内核? 你可以做一个mpstat -P ALL来获取每个CPU的信息。 你有足够的记忆吗? 磁盘? 文件系统设置?

您可以通过查看lsof | grep nginx输出来确定nginx中的哪个操作导致高负载。

你有任何警报/监控到位? 这样,当你看到高度警戒时,你可以得到通知。 你logging服务器负载(通过萨尔)? 你能在一天/一周中识别出任何趋势吗? 什么是进程正在运行?

我也在你的mpstat输出中看到10左右的iowait数字,这意味着你的系统正在等待I / O操作。 那么你需要检查你的磁盘/文件系统设置,并根据需要进行优化。

基本上,高负载并不一定意味着坏 – 这可能意味着您的服务器和服务正在使用。 或者这意味着明天可能会发生不好的事情。 但是,人们应该更好地理解系统行为,而不是简单地说一切顺利。 因此,收集更多的数据,监控,阅读,研究和观察几天,然后这些可能会帮助您获得更多的洞察力。

希望这可以帮助。