今天在客户的生产环境中遇到了网络丢包的问题,但是查看我方部署smokeping监控发现对同一条线路监控,我方监控显示正常,判断丢包是由客户服务器负载过高导致,原因及排查思路如下:

使用uptime命令查看云主机负载

uptime

14:21:39 up 39 days, 22:18,  1 user,  load average: 22.03, 20.01, 23.05

  看到这个负载感觉目前整个操作系统已经很危险了,负载已经达到了20左右,客户云主机配置为8C8G。

理解Linux处理器负载平均值

  以上我们已经使用了uptime命令对当前的云主机性能进行了查看,但是需要明确的是load average值到底多少才算正常呢?我们如何判断丢包的原因是不是因为服务器负载过高导致的呢?

  load average三个数值分别代表不同时间段的系统负载情况(一分钟、五分钟、十五分钟)那么我们应该如何使用这三个值进行准确的判断呢?实际上我们更应该注重五分钟、十五分钟的负载值,如果当前一分钟的负载值升高,五分钟以及十五分钟负载值正常,那么我们不需要过于担心,很可能是暂时现象。如果十五分钟负载值过大那就需要引起我们的注意了,需要我们对云主机进行升级配置或对当前集群进行扩容。

  那么,问题又来了,现在我们知道查看具体时间的负载值对严重程度进行分析了,那么我们进一步就需要判断负载值为多少才需要我们进行关注呢!

实际上负载值是与CPU个数和核数有关的,负载值不应该超过处理器核心数(本次实例负载值不应该超过8)

我们可以如下理解:单核CPU负载正常值不超过1,n核CPU处理器负载值不超过n。现在我们将CPU比作是一座跨海大桥,CPU的个数与核数比作是这座大桥的车道数,当CPU个数与核数为1服务器负载为1时,可以理解为一条单行道的大桥上已经拥堵满了车辆无法在继续前行,后续车辆只能等待前方车辆通过后继续前行,如果CPU个数或核数为8,相当于此条大小的可行车道数为8,理论情况下是当负载达到8时将所有车道堵满无法通行,相信这样就很好理解了。

  曾几何时,我对多核和多个处理器有所误解,就技术而言我接触更多的是多核处理器,下面简单的描述下他们之间的区别。

  • 多核处理器:将多个核心进行集成,例如:一个双核处理器可以同时执行多个不同的进程,大大的提升了系统的处理速度,多个核心在一个芯片上,它们之间的通讯也更快,功耗更低,弊端是所有的压力集中与一个物理处理器,压力过大导致处理器达到瓶颈,有宕机风险。
  • 多个处理器:服务器上安装多个处理器,例如:多个处理器分别处理不同的进程,同样提高了系统的处理速度,但是多个CPU的功耗、体积更大,数据之间通讯更慢,这种分布式系统之间面临着很多问题,如:一个处理器正在处理一个进程,突然出现故障,这个进程后续谁来处理?以及如何协调这些处理器进行工作,这些都是分布式计算将要面临的挑战。

  目前而言,多核处理器仍是市场主流。以上的解释可以用下图更形象的进行展示。

预警值

  如果将CPU比喻为人的话,负载值比喻为工作,我们当然不会让手中的工作达到100%也就是1,所以当负载值超过50%时就需要我们警示了,尽快排查原因,如果真的是无法进行优化处理,那么就尽快进行扩容。CPU真幸福压力大了还可以罢工,人就不是了--活着干,死了算。

理解load averages的更多相关文章

  1. 如何理解 Linux 中的 load averages

    原文:https://mp.weixin.qq.com/s?src=11&timestamp=1533697106&ver=1047&signature=poqrJFfcNAB ...

  2. 理解Load Average做好压力测试

    http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html CPU时间片 为了提高程序执行效率,大家在很多应用中都采用了多线程模式 ...

  3. 理解Load Average做好压力测试(转)

    转载自:http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html SIP的第四期结束了,因为控制策略的丰富,早先的的压力测试结果 ...

  4. Laravel渴求式加载(比较容易理解理解load与with关系)

    渴求式加载 当以属性方式访问 Eloquent关联关系的时候,关联关系数据是「懒惰式加载」的,这意味着关联关系数据直到第一次访问的时候才被加载.不过,Eloquent 还可以在查询父级模型的同时「渴求 ...

  5. 理解Linux系统负荷load average

    理解Linux系统负荷   一.查看系统负荷 如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了. 在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行).(另外,它们在 ...

  6. 理解linux cpu load - 什么时候应该担心了

    译文原文: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages 你可能已经很熟悉linux的平均load. ...

  7. 理解cpu load

    三种命令 1. w 2. uptime 3. top CPU负载和CPU利用率的区别 1)CPU利用率:显示的是程序在运行期间实时占用的CPU百分比 2)CPU负载:显示的是一段时间内正在使用和等待使 ...

  8. Linux系统Load average负载详细解释

    我们知道判断一个系统的负载可以使用top,uptime等命令去查看,它分别记录了一分钟.五分钟.以及十五分钟的系统平均负载 例如我的某台服务器: $ uptime 09:50:21 up 200 da ...

  9. 读懂系统负载(Load Avg)的含义 | Devops

    有过运维Linux服务器的选手,想必对于系统平均负载(load averages)参数不会陌生吧,我们可以通过top, htop, uptime这些命令找到它们(如下图),那么我们又改如何理解它们呢, ...

随机推荐

  1. clusterProfiler包

    1)enrichGO:(GO富集分析) 描述:GO Enrichment Analysis of a gene set. Given a vector of genes, this function ...

  2. mysql 导出sql结果成csv文件

    mysql -uroot -p -e "use database;sql语句:" > a.csv 举例: mysql -uroot -p -e "use main; ...

  3. getchar()、putchar()、gets()、puts()、cin.get()、cin.getline()、getline()

    1.getchar: 原型为int getchar(void). 它从stdin里读取一个字符.返回值为用户输入的ASCⅡ码,出错返回-1. eg:c=getchar(). 2.putchar: 原型 ...

  4. RigidBody组件的Is Kinematic

    RigidBody组件的Is Kinematic属性打上勾(设为true,使其不受物理引擎驱动,Wall是为了防止其移动,Person是为了防止其受到力不断旋转—看的心塞=v=) .is kinema ...

  5. MyBatis一对一查询

    ---------------------siwuxie095                                 MyBatis 一对一查询         以订单和用户为例,即 相对订 ...

  6. javascript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)

    var newpwd = $("#newpassword").val(); //var pattern = "([A-Za-z]|[0-9]|-|_){4,16}&quo ...

  7. SSL - 简介

    一.密码技术 要了解SSL协议,首先要了解:加密算法.消息摘要算法(又称为哈希算法Hash),数字签名等概念.这些技术每个都可以写出一整本的书,它们结合在一起,提供了保密性.完整性和身份验证的功能. ...

  8. PAT 1048 数字加密(20)(代码+思路)

    1048 数字加密(20)(20 分) 本题要求实现一种数字加密方法.首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取 ...

  9. [PHP]require include

  10. Vue.js 与 Laravel 分离

    首先表示折腾了十来天的php-laravel框架和vue的结合开发又偏前端实在是太大的阻碍,首先laravel的机制就是写完路由router再加载blade模板的.如果要在laravel工程里面加载一 ...