优化了一波Linux性能,面试官让我出门左拐

看球不费电
发布于 2023-5-12 11:57
浏览
0收藏

作为一个技术博主,了不起不是在创作就是在创作的路上(当然偶尔也会有点恰饭文~还指望大家多多支持),今天我们不说数据结构,我们来说说关于这个 ​​Linux​​​ ,之前了不起也给大家说过关于 ​​Linux​​​ 的学习,以及在 ​​Linux​​​ 下如果编写 ​​Shell​​​ 脚本,今天我们来看的,不是​​Linux​​ 下的基础命令的了,而是一些相对来说比较有意思的内容。

Linux

关于 ​​Linux​​​ 系统是什么东西,我们在这里直接不进行赘述了,毕竟大家已经都是作为有经验的开发人员,就算是没有工作经验的人,至少也都知道,目前市场上比较流行的操作系统,就这么几种了,而这个​​Linux​​​ 也是我们在开发中经常用到的,但是你真的会 ​​Linux​​​ 一些高级操作么?比如如何优化 ​​Linux​​ 的各种性能。

优化了一波Linux性能,面试官让我出门左拐-鸿蒙开发者社区

Linux 的性能优化

说实话,干开发的,说到性能优化,那可不单单只是对于 ​​Linux​​ 来进行,而是针对各个方面的内容,比如::

程序设计、编程语言,再到系统、存储、网络等各种 底层基础设施的方方面面,每一个组件都有可能出问题,而且很有可能多个组件同时出问题。

了不起之前也说了关于这个 ​​SQL​​​ 方面的优化,我们今天只是来说这个 ​​Linux​​ 的性能优化的。

要说性能优化,肯定得说性能指标,那么性能指标指的是什么呢?

性能指标:“高并发”和“响应快”是从应用负载的视角来考察性能,直接影响了产品终端的用户体验。也正对应着性能优化的两个核心指标——“吞吐”和“延时”。

Linux 性能优化-CPU

既然说到 ​​CPU​​ 的性能优化,那么首先我们要知道一个概念,那就是平均负载率

平均负载率是什么呢?

平均负载是指单位时间内,系统处于 可运行状态 和 不可中断状态 的平均进程数,也就是平均活跃进程数,它和 ​​CPU​​ 使用率并没有直接关系。

切记,这个平均负载率不是说 ​​CPU​​ 的使用率,而是平均活跃进程数。

至于这个可运行进程呵呵这个不可终端状态进程迁就更简单了。

  • 可运行状态的进程

是指正在使用 ​​CPU​​​ 或者正在等待 ​​CPU​​​ 的进程,也就是我们常用 ​​ps​​​ 命令看到的,处于 ​​R​​​ 状态(​​Running​​​ 或 ​​Runnable​​)的进程

  • 不可中断状态的进程

是正处于内核态关键流程中的进程,并且这些流程是不可打断的, 比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ​​ps​​​ 命令中看到的 ​​D​​​ 状态 (​​Uninterruptible Sleep​​​,也称为 ​​Disk Sleep​​)的进程。

那么我们应该怎么取查看系统的负载呢?

uptime

优化了一波Linux性能,面试官让我出门左拐-鸿蒙开发者社区

结果就是上面的图,那么都代表了什么意思呢?

17:17:34 // 当前时间
up 8 days // 系统运行时间
3 users // 正在登录用户数
load average: 0.16, 0.12, 0.17 //三个数字呢,依次则是过去 1 分钟、5 分钟、15 分钟的平均负载

如果 1 分钟、5 分钟、15 分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。

如果 1 分钟的值远小于 15 分钟的值,就说明系统最近 1 分钟的负载在减少,而过去 15 分钟内却有很大的负载。

如果 1 分钟的值远大于 15 分钟的值,就说明最近 1 分钟的负载在增加,这种 增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。一旦 1 分钟的平均负载接近或超过了 ​​CPU​​ 的个数,就意味着系统正在发生过载的问题,这时就 得分析调查是哪里导致的问题,并要想办法优化了。

其实总结起来就很简单,如果 ​​load average​​ 参数三个参数区别不大,那么就是很平稳,如果第一个小于第三个并且差值很大,那么负载很大,如果第一个值远大于第三个只,那么就得需要排查一下,会不会出现超出负载的状况了。

那么这个平均负载什么时候是最合适的呢?

其实这个平均负载最合适的状态就是和 ​​CPU​​​ 的个数持平,怎么查看 ​​CPU​​ 的个数呢?

 cat /proc/cpuinfo | grep 'processor' | wc -l
 8

我们可以看到,这个逻辑 ​​CPU​​ 的个数是 8个,

当平均负载比 ​​CPU​​ 个数还大的时候,系统已经出现 了过载。在观察负载数据时,我们有三个时间点的数据,因此 都要看。三个不同时间间隔的平均值,其实给我们提供了,分析系统负载趋势的 数据来源,让我们能更全面的理解目前的负载状况。

当平均负载高于 ​​CPU​​ 数量 70% 的时候,你就应该分析排查负载高的问题了(70% 这个数字并不是绝对的,最推荐的方法)。

其实 Linux 也是有很多的系统压力测试工具的。

比如:sysstat 工具,就是,用来监控和分析系统的性能。

至于工具怎么用,了不起在这里就不多做介绍了,毕竟这个内容不是咱们今天想说的。

其实主要就是来定位哪个异常的进程,然后吧这个异常的线程直接给他干掉,先保证 Linux 的正常,然后在找这个异常进程出现的原因,最终解决掉这个问题。

CPU 使用率

上面我们说到了这个 ​​CPU​​​ 使用率,那么什么是 ​​CPU​​ 使用率呢?

​CPU​​ 使用率 = 1- (空闲时间/总 CPU 时间)

其实还可以使用 ​​top​​ 命令来查看系统总体的CPU和内存使用情况,以及各个进程的资源使用情况。

知道怎么通过 ​​CPU​​​ 来优化 ​​Linux​​ 性能了么?学会了么?



文章转载自公众号:  Java极客技术

标签
已于2023-5-12 11:57:14修改
收藏
回复
举报
回复
    相关推荐