理解负载均衡

2023-05-16

什么是平均负载?

单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系。
所谓可运行状态的进程,是指正在使用CPU或者等待CPU的进程,也就是我们常用ps命令看到的,处于R状态(Running或者Runnable)的进程。不可中断状态的进程是正处于内核态关键流程中的进程,并且这些流程是不可打断的。
比如当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。可以认为不可中断状态是系统对进程和硬件设备的一种保护机制。

平均负载为多少合适?

平均负载可以简单的理解为是平均活跃进程数,也可以理解为单位时间内的活跃进程数。因此理想情况是每个CPU上面都运行一个进程。
通过命令查询系统有多少CPU

$ grep ‘model name’ /proc/cpuinfo | wc -l

通过uptime命令查询系统负载

$ uptime

16:42:54 up 187 days, 21:49,  1 user,  load average: 0.00, 0.14, 1.08
16:42:54 :当前时间
up 187 days, 21:49 :系统运行时间
1 user :正在登陆用户数
load average: 0.00, 0.14, 1.08 : 过去1分钟、5分钟和15分钟的平均负载

当平均负载高于CPU个数的时候,系统就出现过载。从1分钟、5分钟和15分钟的负载值可以看出负载变化趋势:

  • 1分钟、5分钟、15分钟三个值基本相同或者相差不大,说明系统负载平稳
  • 1分钟的值远小于15分钟的值,说明负载在下降
  • 1分钟的值远大于15分钟的值,说明负载在上升

实际生产中一般认为平均负载高于CPU数量70%的时候就处于负载过高,需要分析排查,以免影响服务响应。

平均负载与CPU使用率

平均负载指单位时间内处于可运行状态和不可中断状态的进程数。所以它不仅包括了正在使用CPU的进程,还包括等待CPU和等待I/O的进程。
CPU使用率指单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。

  • CPU密集型进程,使用大量CPU会导致平均负载升高,此时两者一致。
  • I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高
  • 大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会很高。

如何分析?

先通过uptime命令查看平均负载情况

$ uptime
16:59:50 up 1210 days,  6:27,  7 users,  load average: 0.02, 0.48, 0.68

通过mpstat 查看CPU使用率变化情况

-P ALL 表示监控所有 CPU,数字 5 表示间隔 5 秒后输出一组数据
$ mpstat -P ALL 5

05:02:53 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
05:02:58 PM  all    3.28    0.00    0.49    0.01    0.00    0.00    0.00    0.00    0.00   96.22
05:02:58 PM    0    1.60    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   98.20
05:02:58 PM    1    5.20    0.00    0.20    0.20    0.00    0.00    0.00    0.00    0.00   94.40
05:02:58 PM    2    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.80
05:02:58 PM    3    5.21    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   94.59

05:02:58 PM    4    0.20    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.60

05:02:58 PM    5    5.20    0.00    0.60    0.20    0.00    0.00    0.00    0.00    0.00   94.00

05:02:58 PM    6    4.80    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   95.00

05:02:58 PM    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

05:02:58 PM    8    0.20    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.40

05:02:58 PM    9    1.60    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   98.20

05:02:58 PM   10   88.00    0.00   12.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

05:02:58 PM   11    0.00    0.00    0.80    0.20    0.00    0.00    0.00    0.00    0.00   99.00

通过pidstat查看哪个进程导致CPU使用率高

间隔 5 秒后输出一组数据

$ pidstat -u 5 1

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command

Average:        0        10    0.00    0.20    0.00    0.20     -  rcu_sched

Average:        0       998    0.00    0.20    0.00    0.20     -  xfsaild/sda5

Average:        0      1111    0.00    0.40    0.00    0.40     -  irqbalance
Average:       26    175314   88.47   11.53    0.00  100.00     -  postgres

Average:       26    176282   83.50   16.50    0.00  100.00     -  postgres

总结

平均负载提供了一个快速查看系统整体性能的手段,反应了整体的负载情况。但只看平均负载本身,并不能直接发现到底哪里出现了瓶颈。在理解平均负载时,需要注意:

  • 平均负载高有可能是CPU密集型进程导致
  • 平均负载高并不一定代表CPU使用率高,还有可能是I/O更繁忙了
  • 当发现负载高的时候,可以使用mpstat、pidstat等工具,辅助分析负载的来源

性能分析的时候,还可以使用htop、atop等工具进行监控。后面单独介绍这两个工具的用法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解负载均衡 的相关文章

  • AFNetWorking3.0处理请求头和请求内容

    今天要处理用户的相关信息 xff0c 需要在HTTP请求中添加请求头 xff0c 网上大部分资料都是针对AFNetWorking2 0的 xff0c 我用3 0版本实现了相关功能 xff0c 见下面代码 首先是请求的URL xff0c sp
  • chrome浏览器安装插件,提示程序包无效

    chrome浏览器安装插件的时候 xff0c 如果提示 程序包无效 xff1a CRX HEADER INVALID xff0c 导致插件安装不上去 xff0c 这个时候该怎么办呢 xff1f 通常 xff0c 这种错误在chrome浏览器
  • viewpage+radiogroup

    lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt LinearLayout xmlns android 61 34 http schemas android com apk
  • 线程执行设置超时时间

    import java util concurrent 记录 xff0c 备忘 线程执行设置超时时间 public class Main2 定义线程池 xff0c 推荐手动创建线程池 xff1a https blog csdn net LL
  • Java集合工具类Collections常用方法详解

    文章目录 1 Collections介绍2 Collections常用方法2 1 reverse 2 2 sort 2 3 swap 2 4 min 和max 2 5 copy 2 6 fill 2 7 replaceAll 2 8 shu
  • 智慧小区智能物业管理系统综合解决方案

    因为传统的办公方式效率低 xff0c 工作强度大 人们需耗费大量的时间和精力去手工处理那些繁杂 重复的工作 xff0c 而手工处理的延时和差错 xff0c 正是现代化管理中应该去除的弊端 又由于物业管理企业的启动基金不足 xff0c 多种经
  • LAMP基础搭建

    目录 一 LAMP 1 LAMP环境 2 组成部分 xff08 1 xff09 Linux xff08 平台 xff09 xff08 2 xff09 Apache xff08 前台 xff09 xff08 3 xff09 Mysq xff0
  • python获取子窗口句柄

    2022 09 17 python获取子窗口句柄 python获取窗口句柄 python获取进程 python获取电脑微信小游戏的窗口句柄 上图为按键精灵的工具 python3 xff0c 简单的获取了下句柄 xff0c 想改改内存的 xf
  • Linux多线程编程(三)-----生产者与消费者(条件变量,信号量)

    Linux多线程编程 xff08 一 xff09 xff1a http blog csdn net llzk article details 55670172 Linux多线程编程 xff08 二 xff09 xff1a http blog
  • 微策略的笔试题

    觉得在收获Offer的季节应该为自己积累些人品了 xff0c 在这里将今天的情况向所有求Offer的童鞋分享下 从上个周末开始反应迟钝的我终于有了些求Offer的感觉 xff0c 几天参加了4场面试 xff0c 基本上没觉得有很大的挑战 x
  • 线程池定时任务添加任务以及停止线程

    最近有个需求 就是项目启动的时候需要创建个线程池去执行 而且有时间周期 而且根绝不同的情况可以随时通过接口停止该线程 1首先创建个线程池 默认核心为10 static ScheduledExecutorService threadPool
  • 冰冻三尺非一日之寒-自学篇 浅谈个人学习方法

    昨晚还在看比赛 xff08 war3 xff09 xff0c 小源跑过来问我明天1024 xff0c 不写篇文章么 xff0c 想想也是 xff0c 1024这也算个热点 xff0c 赶紧来蹭蹭 xff0c 哈 xff0c 开个玩笑 上次谈
  • 【附源码】Java计算机毕业设计社区团购服务系统(程序+LW+部署)

    项目运行 环境配置 xff1a Jdk1 8 43 Tomcat7 0 43 Mysql 43 HBuilderX xff08 Webstorm也行 xff09 43 Eclispe xff08 IntelliJ IDEA Eclispe
  • iOS---iOS10适配iOS当前所有系统的远程推送

    一 iOS推送通知简介 众所周知苹果的推送通知从iOS3开始出现 每一年都会更新一些新的用法 譬如iOS7出现的Silent remote notifications 远程静默推送 iOS8出现的Category 分类 也可称之为快捷回复
  • iOS总结_UI层自我复习总结

    UI层复习笔记 在main文件中 xff0c UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil xff0c 即创建的是UIApplication类型的对象 xff0c 此对象看成是整个
  • 【疯狂造轮子-iOS】JSON转Model系列之一

    1 前言 之前一直看别人的源码 xff0c 虽然对自己提升比较大 xff0c 但毕竟不是自己写的 xff0c 很容易遗忘 这段时间准备自己造一些轮子 xff0c 主要目的还是为了提升自身实力 xff0c 总不能一遇到问题就Google 之前
  • 解决fastboot 刷 system.img 尺寸限制问题

    fastboot S xxxM flash system system img 其中 S 后面为单次上传大小 C platform tools gt fastboot S 300M flash system system img sendi
  • 修改Gnome Terminal窗口的默认大小

    修改Gnome Terminal窗口的默认大小 以前一直比较别扭的是 xff0c Gnome Terminal窗口打开时总那么小 曾经找半天也不知道在哪里改 xff0c 甚至在官方论坛里也没查到 今天偶然间想到那个Preferred App
  • 前端基础练习题

    变量命名规则 xff1a 1 只能由字母 数字 下划线 美元符号组成 xff0c 并且不能以数字开头 2 变量命名要有意义 xff0c 杜绝a01 b0046 3 变量遵循小驼峰规则 第一个单词全小写 xff0c 从第二个单词开始 xff0
  • Unity5-ABSystem(三):AssetBundle加载

    Unity特殊路径 ResourcesStreamingAssetsPathPersistentDataPathDataPath 同步加载 核心函数安卓平台下不能同步加载问题示例 异步加载 核心函数示例WWW异步加载 资源加载 核心函数 加

随机推荐

  • Unity5-ABSystem(五):AssetBundle内存

    AssetBundle内存占用 建议 实测 www加载实测LoadFromFile加载实测 建议 AssetBundle内存占用 先上图 xff0c Don t panic 我们从AssetBundle中加载资源一般会经过三个步骤 xff1
  • Java中String字符串长度

    String类是Java中最为常用的类 xff0c 我们知道String是个final类 xff0c 不能修改内容 但是String类型是否有长度限制呢 xff0c 下面来一探究竟 想要搞清楚这个问题 xff0c 首先我们需要翻阅一下Str
  • 安装BBR时出现Error: Install elrepo failed, please check it.

    安装BBR时出现Error Install elrepo failed please check it Press any key to start or Press Ctrl 43 C to cancel curl 35 SSL conn
  • mac卸载mysql教程(按照步骤可完全卸载)

    Mac下卸载mysql的方法 xff1a 大部分卸载是因为版本高 1 关闭mysql 查看mysql是否启动 xff1a ps ef grep mysql 2 输入 xff1a kill 9 然后回车 xff0c 关闭mysql 3 卸载
  • 全网最简单Win10桌面美化教程,只需4步!!

    时间过得真滴快呀 xff01 咋眼就10月了 不知道国庆期间 小伙伴们是外出旅游 还是宅在家里哪里也没去 或者更悲催一点 还在国庆加班抑或因为疫情正在隔离 无论大家处于任何状态 小七都要在这里祝大家 xff1a 国庆节快乐 吉祥话说完了 下
  • Pycharm配置Jupyter Notebook实现本地开发与调试

    Pycharm专业版中集成了Jupyter Notebook xff0c 方便用户编辑 xff0c 执行和调试Notebook代码 xff0c 并检查执行输出 个人感觉 xff0c 相比于Jupyter提供的网页编辑器 xff0c Pych
  • Zookeeper选举机制介绍

    ZooKeeper是一个高可用的分布式协调服务 xff0c 它的核心功能之一就是选举机制 当ZooKeeper集群中的一个节点宕机时 xff0c 需要通过选举机制来选出一个新的leader节点 xff0c 确保集群的正常运行 下面是ZooK
  • redis实现布隆过滤器

    Redis是一种基于内存的数据存储系统 xff0c 具有高性能 高可用性 高扩展性等特点 xff0c 因此被广泛用于实现布隆过滤器 以下是一种基于Redis实现布隆过滤器的方案 xff1a 创建一个长度为m的位数组 xff08 bit ar
  • 解决shiro的登录成功后跳转到自定义error.html的问题

    解决shiro的登录成功后跳转到error html 1 先说一下问题现象 xff1a saas项目中 xff0c 登录成功之后 xff0c 跳转了error html xff0c 停顿一会儿后进入主页面 2 说一下我处理这个问题的步骤 x
  • 喜茶皇茶茶叶带您走上致富之路

    我国是茶文化的发源地 xff0c 尤其是南方各类品种的茶层出不穷 xff0c 茶韵茶香引人入胜 消费者生活水平大幅提高 xff0c 饮茶几乎已经成为一种时尚 xff0c 皇茶 在市场上受到大家的认可与喜爱 xff0c 短短时间内迅速发展壮大
  • 处理Spire.Pdf 生成书签有 Evaluation Warning : The document was created with Spire.PDF for .NET.字样的问题

    处理spire Pdf生成时的警告信息 这俩天在使用spire Pdf生成书签的时候总是会有Evaluation Warning The document was created with Spire PDF for NET 的警告字样 x
  • Android Drawable Preview插件适配Android Studio4.1版发布

    Android Drawable Preview是一个在安卓开发中非常有用的AS IDEA插件 可以将drawable资源文件的icon替换成内容的预览图 达到不需要打开资源文件 快速预览内容的功能 实在是非常的方便快捷 让开发工作更加的愉
  • 变频器的逆变、变频原理

    变频器的逆变 变频原理 YJZhang 从事制造业质量管理 xff0c 做过PCBA 线束 电话机 变频器行业 90 人赞同了该文章 变频器将直流电转变为交流电的这个过程叫 逆变 xff08 inverting 先讲逆变过程 xff0c 分
  • ubuntu20.04设置自动文字模式登录

    文字模式登录后取得的程序称为 Shell xff08 壳 xff09 xff0c Linux 的壳程序是bash xff08 Bourne Shell的增强版本 xff09 设置文字模式登录 xff1a 第一步 xff1a 进入grub文件
  • 从高考到程序员

    记得当年进入考场的时候也是志气满满 xff0c 心里念叨着一定要考上自己理想的大学 xff0c 光宗耀祖 当时坐在学校安排的bus上向考场的方向行进 xff0c 看到路边的交警叔叔 xff0c 情不自禁的喊了一声 xff0c 交警大哥辛苦了
  • Android内存优化(二)之如何分析native heap

    如何获取native heap请阅读上篇文章 xff0c 本篇文章将主要介绍如何分析一个native heap文件 xff0c 以及我们的native memory leak问题如何发现并定位 首先先来看一下实际中我们看到的native h
  • 基于springboot的薪资管理系统设计

    一 系统介绍 项目源码 xff1a https gitee com oklongmm code 这是一个界面简洁的薪资管理系统 xff0c 虽然界面简单 xff0c 但其工资项配置 xff0c 与考勤挂钩 xff0c 自动核算功能强大 xf
  • Dijkstra算法详解

    1 dijkstra算法简介 Dijkstra算法是由E W Dijkstra于1959年提出 xff0c 又叫迪杰斯特拉算法 xff0c 它应用了贪心算法模式 xff0c 是目前公认的最好的求解最短路径的方法 算法解决的是有向图中单个源点
  • C++建立动态二维数组

    C 43 43 建立动态二维数组主要有两种方法 xff1a 1 使用数组指针 xff0c 分配一个指针数组 xff0c 将其首地址保存在b中 xff0c 然后再为指针数组的每个元素分配一个数组 int b 61 new int row 分配
  • 理解负载均衡

    什么是平均负载 xff1f 单位时间内 xff0c 系统处于可运行状态和不可中断状态的平均进程数 xff0c 也就是平均活跃进程数 xff0c 它和CPU使用率并没有直接关系 所谓可运行状态的进程 xff0c 是指正在使用CPU或者等待CP