如何分析系统平均负载过高?

文章目录

  • 前言
  • uptime命令
  • 平均负载
  • 平均负载到底是多少才合理
  • 平均负载和CPU的关系
    • CPU与进程1比1,CPU使用率高导致负载变高
    • I/O高,导致负载高
    • 进程数超过CPU数,导致负载高

前言

我相信你应该用过uptime命令查询系统负载的情况,或者在各种监控终端上看到过系统load这一项,但是每次问别人到底什么是系统load?系统load到达多少算过高?又有哪些原因会造成系统load过载?我发现很少有人能回答清楚,大多数都觉得系统load过载就表示CPU使用率过载、然而实际上并不完全这样的,本文就来仔细分析一下到底有哪些原因会造成系统load过载!

uptime命令

还是先来看看uptime命令,
在这里插入图片描述
通过uptime命令可以观察到 load average(平均负载),三个数字分别表示过去1分钟、5分钟、15分钟的系统平均负载。

平均负载

提到平均负载,大多数人都认为就是系统单位时间内CPU的使用率,比如上面的0.02就表示过去5分钟系统CPU使用率为2%,很明显这样的理解是不正确的,不要以为负载和CPU使用率有什么关系。

我们可以通过man uptime介绍,来看看官方对于平均负载的定义是怎样的。

在这里插入图片描述
其中如下这段定义表明了什么是平均负载

System load averages is the average number of processes that are either in a  runnable  or  uninterruptable  state

System load averages是处于可运行不可中断状态的进程的平均数。

那什么是可运行和不可中断呢?这里需要解释一下。

所谓可运行是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。
在这里插入图片描述
不可中断是处于不间断状态的进程,此流程是不可打断的,比如最常见的是等待磁盘设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。

所以,平均负载更准确的定义应该是单位时间内活跃进程数的指数衰减平均值。

平均负载到底是多少才合理

既然我们知道平均负载实际就是活跃的进程数,那最理想的状态下应该就是每颗CPU上刚好运行一个进程,这样才能充分的利用CPU,比如平均负载如果为2时,如果只有1颗CPU,则表示有一半的进程争抢不到CPU,如果有2颗CPU,则表示每颗CPU都得到了100%的利用,如果有4颗CPU,则表示CPU利用率只有50%。

一般情况下,当平均负载高于CPU数量70%时,就应该需要排查负载高的原因了,当然70%是一个经验值,冗余30%也是为了应对一些突发状况,或者系统短时高峰的场景,为了确保系统的稳定性,我们应当持续观察系统每天的负载情况,对负载进行实时监控,当持续出现负载异常时能够自动告警。

平均负载和CPU的关系

前面已经做过说明,平均负载高不一定就会带来CPU使用率高,因为平均负载表示的含义是,可运行或不可中断状态的进程,如果负载高是因为可运行进程造成的,那就会造成CPU使用率也高,但如果负载高是因为不可中断进程造成的,那CPU使用率是不会很高的。

CPU与进程1比1,CPU使用率高导致负载变高

使用stress来模拟平均负载高的情况

运行命令

stress --cpu 1

负载变高
在这里插入图片描述

CPU达到100%
在这里插入图片描述

I/O高,导致负载高

使用stress-ng,模拟I/O压力导致负载高的场景

运行命令

stress-ng -i 4 --hdd 1 --timeout 600

负载变高
在这里插入图片描述

CPU使用率并不高,但是iowait变的很高在这里插入图片描述

进程数超过CPU数,导致负载高

运用命令

 stress -c 8

负载变高
在这里插入图片描述

单个CPU使用率并不高
在这里插入图片描述

大多数都消耗在wait上,也就是等待CPU的时间上
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28191.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线上负载过高排查(top/vmstat/ifstat/free/df)

目录 一、五大命令 二、故障排查步骤 1、top命令找出CPU占比最高的 2、ps -ef 或者 jps -l进一步定位 3、ps -mp位到具体线程或者代码 4、jstack精准定位到错误的地方 本文通过学习:周阳老师-尚硅谷Java大厂面试题第二季 总结的LinuxJDK命令操作相关的笔记 一…

解决Linux 负载过高问题过程记录

解决问题的思路 1.top命令查看该机器的负载状况 2.cd /proc/pid 查看对应高占用程序的位置 3.进入对应程序中查看日志,根据CPU和内存这两个因素分析 4.ps -ajxf 查看进程及其之下的线程,通过stat查看是否存在D僵尸进程 1.什么是负载过高 1.1load A…

假如ChatGPT 去面试前端工程师,结果会怎么样?

近日,有个叫 ChatGPT 的同学来我司面试前端,考考他面试八股文。先来问问闭包。 第一问,说说 JS 闭包 追问,详细讲讲闭包 由于篇幅太长,转成文字,以下皆为 ChatGPT 回答 闭包是一个非常重要的 JavaScript 概…

青椒肉丝饭

今天第一次来华德吃饭,为了吃这顿饭跑遍了半个上海。 先是去长乐路上的大铁门排挡吃自助,结果人家收摊了,估计都回家过年了吧。 然后又去新华路上的粮仓饭湘,结果人满为患,连个站的地方都没有。 最后回到北新泾这里…

五花青椒包菜

[猪头]每次做完菜,第一口一定要找块好肉尝尝。肉好吃😋,这道菜就差不了,下饭。 ​[调皮]肉不好吃的菜,没有灵魂。 ​[愉快]今天的菜,五花肉青椒土豆包菜。

青椒肉丝

青椒肉丝 材料 15元的肉丝 一根葱 两个辣椒 生粉,盐,油 步骤 1.开煤气,将锅烧热,小火炖下肥肉得到猪油,将残渣捞出 2.切好的肉丝撒上生粉,摔摔肉,弄匀 3.倒入油(满锅底&#xff…

java设计模式之一(工厂模式)

何为工厂模式? 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑&#xff…

Java 设计模式之迭代器模式

一、了解迭代器模式 1.1 什么是迭代器模式 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 迭代器模式把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也可以让责任各得其所。 …

【菜谱】青椒肉丝

【菜谱】青椒肉丝 食材配料步骤准备工作开始制作 成果展示 下周一上班,今天回家收拾东西。虽然是个程序员,但是也想炒一手好菜,就先在家里练习了,意外的发现还不错! 食材 猪里脊肉 175g (老妈就给我拿了这…

Java设计模式实现烹饪助手程序

Java设计模式实现烹饪助手程序 一. 程序设计目标和使用说明 1、程序设计目标 该程序在eclipse4.6.3版本中完成,用的是jdk1.7。     该程序的设计目的是为了学习java设计模式,应用其中的几个模式编写一个程序,在编写程序的过…

博士毕业,高校青椒还是30万年薪私企?

来源 | 知乎 网址 | https://www.zhihu.com/question/58594731 编辑 | 深度学习与计算机视觉 声明:仅做学术分享,侵删 年龄不占优势,高校稳定,企业收入高,如何选择? 作者:光子https://www.zhihu…

java设计模式-迭代器模式

java设计模式-迭代器模式 一、了解迭代器模式 1.1 什么是迭代器模式 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 迭代器模式把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也…

3D设计云桌面

青椒云3D设计桌面云方案,为使用GPU高负载应用的设计师们提供强大支持,如3D建模、光线追踪、渲染计算等领域,带来极致流畅的3D设计桌面体验,同时提升工作效率、可管理性和安全性。3D设计桌面云方案满足了工业客户在专业设计场景中的以下需求 1、强大的图形计算引擎保证专业…

设计模式-建造者模式

设计模式-建造者模式 传统模式类JDK8的Builder 别名:创建者模式 建造者模式针对复杂对象,分离它们的构建与表示,达到同样构建过程创建不同表示的目的。 建造者模式封装了复杂对象的构建过程,通过子类继承或者重载的方式&#xff0…

设计模式---工厂模式

工厂模式 具体的需求 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 披萨的种类很多(比如 GreekPizz、CheesePizz 等) 披萨的制作有 prepare、bake、cut、box 完成披萨店订购功能 public abstract class Pizza {protect…

浅谈设计模式

状态模式 核心思想就是用于解决一个物体在不同状态下复杂的逻辑行为,比如一个英雄有待机状态,行走状态,攻击状态,以后可能还会添加眩晕状态,冰冻状态一系列状态。 如果使用平常代码来写的话,就会使用分支语…

青椒开计算机课,不断学习 砥砺前行——揭开青椒成长的秘密

从上海到梧州,1700多公里;从2017年9月到今天,300多个日子。我们在互联网结缘,我们在互加遇见。于是,便开始了一路美丽的相伴,相伴在“互加”,相伴在“青椒”,相伴在“美丽乡村”………

了解计算机软件系统教学设计,认识计算机》教学设计

认识计算机》教学设计 作为一名教职工,就有可能用到教学设计,教学设计一般包括教学目标、教学重难点、教学方法、教学步骤与时间分配等环节。那么什么样的教学设计才是好的呢?以下是小编整理的认识计算机》教学设计,仅供参考&…

Java 设计模式——组合模式

概述 有时我们可能会被要求处理一个层级结构明显的对象,比如上下级的公司员工、比如层级嵌套的文件夹,还有丰富多彩的美食菜单。可是,我们可能要屡试不爽地编写深度搜索代码、要小心翼翼地编写递归逻辑。现在你可以忘掉这些,学习…

设计模式之模板方法模式

概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如&#…