专栏首页只喝牛奶的杀手开发应该知道的Linux系统分析

开发应该知道的Linux系统分析

一谈到Linux系统分析,大多数开发觉得不了解也没有关系,但是了解了可以帮你走的更远。从开发的角度了解CPU,MEMORY,IO,NETWORK。在日常工作中我们也会遇到一些Linux系统性能的问题,比如服务器CPU怎么就100%了,内存怎么飙升?CPU,MEMORY,IO,NETWORK这四者是高度依赖,相互影响。

  • 可用内存的减少可能增加大量的交换,系统负载上升甚至崩溃
  • 网卡的大吞吐量会导致更高的CPU开销
  • 大量的磁盘写请求会消耗CPU和IO
  • CPU狂飙会造成大量进程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存,又会造成磁盘IO增加和CPU开销增加(用于进程切换、缺页处理的CPU开销)
  • ……

是结果还是原因?是直接结果还是间接结果?下图为Linux常用性能调优工具索引。

大多数情况下,虽然性能瓶颈的起因是程序性能差或者是内存不足或者是磁盘瓶颈等各种原因,但最终表现出的结果就是CPU耗尽,系统负载极高,响应迟缓,甚至暂时失去响应,因此我们观察服务器状况时,最先看的就是系统整体负载和CPU空闲度。

linux系统不像widows系统任务管理器做的那么优秀的GUI。

load average 代表:1分钟 5分钟 15分钟内系统的平均负荷。

当CPU完全空闲的时候 平均负荷为0;当CPU工作量饱和的时候 平均负荷为1。

如果只有1分钟的系统负荷大于1.0,其他两个时间段都小于1.0,这表明只是暂时现象,问题不大;如果15分钟内,平均系统负荷大于1.0,表明问题持续存在,不是暂时现象所以,你应该主要观察15分钟系统负荷,将它作为服务器正常运行的指标。

系统负荷为0:大桥上一辆车也没有

系统负荷为0.5:大桥一半的路段有车

系统负荷为1.0:大桥的所有路段都有车,也就是说大桥已经“满”了,但直到此时大桥还是能顺畅通行的

系统负荷为1.7:车辆太多了,大桥已经被占满了(100%),后面等着上桥的车辆为桥面车辆的70%.

以此类推,系统负荷2.0,意味着等待上桥的车辆与桥面的车辆一样多;

系统负荷3.0,意味着等待上桥的车辆是桥面车辆的2倍。总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久。

CPU的系统负荷,基本上等同于上面的类比.大桥的通行能力,就是CPU的最大负荷;

桥梁上的车辆,就是一个个等待CPU处理的进程(process).如果CPU每分钟最多处理100个进程,那么系统负荷0.2,意味着CPU在这1分钟里只处理20个进程;

系统负荷1.0,意味着CPU在这1分钟里正好处理100个进程;

系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理.

当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化.

当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来.

当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了.你不应该让系统达到这个值.

2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量.推广开来,n个CPU的电脑,可接受的系统负荷最大为n.0.

例如,系统有8个CPU,如果load average的三个值长期大于8时,说 明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能.相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。

说完系统负荷,我将会从CPU,MEMORY,IO,NETWORK来分析说明,下一篇为《开发应该知道的Linux系统分析-CPU篇》,欢迎关注,持续更新!


每周一句:要知道,你永远的对手,就是你自己。而你要战胜的,是过去的自己。

本文分享自微信公众号 - 只喝牛奶的杀手(killerhub),作者:只喝牛奶的杀手

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 开发应该知道的Linux系统分析-CPU篇

    /proc/cpuinfo是可以获取系统CPU信息比如物理CPU的个数 每个CPU的物理核心数量 CPU的型号和主频等信息。

    只喝牛奶的杀手
  • MySQL查询成本

    CPU、内存、磁盘IO、网络作为性能优化的四大天王,但MySQL中一条查询语句的执行成本是由磁盘IO和CPU成本决定的:

    只喝牛奶的杀手
  • 绞杀者模式

    通过将特定的功能片断逐渐取代为新的应用程序和服务,逐步迁移旧系统。 随着旧系统的功能被替换,新系统最终将取代旧系统的所有功能,抑制旧系统并使其停用。

    只喝牛奶的杀手
  • 理解Linux系统负荷

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

    ruanyf
  • 理解Linux系统负荷

    如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了。在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行)。信息中显示"load ...

    春哥大魔王
  • PHP性能分析之Xhprof数据说明

    Marser
  • 据说只有程序员看得懂这些段子

    腾讯NEXT学位
  • SAP OData service的执行是如何从Gateway系统转交到backend系统

    下面是我今天研究的后台OData数据的model以及如何在IE里面consume:

    Jerry Wang
  • ApacheCN 翻译活动进度公告 2019.4.7

    版权声明:License CC BY-NC-SA 4.0 / 自豪地采用谷歌翻译 https://blog.csdn.net/wizardforcel/...

    ApacheCN_飞龙
  • OpenStack(企业私有云)万里长征第四步——DevStack整体安装规划及使用

    一、前言 前期成功通过DevStack安装OpenStack,现将从机房规划到虚拟机搭建的整个过程总结如下,以供日后查阅或有需之人参考。 二、机房规划 这个整个...

    魏守峰

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动