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

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

作为一个技术博主,了不起不是在创作就是在创作的路上(当然偶尔也会有点恰饭文~还指望大家多多支持),今天我们不说数据结构,我们来说说关于这个 Linux​ ,之前了不起也给大家说过关于 Linux​ 的学习,以及在 Linux​ 下如果编写 Shell​ 脚本,今天我们来看的,不是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

图片

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

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极客技术
相关推荐

2020-05-22 08:11:48

线程池JVM面试

2021-01-01 09:03:44

故障HAProxy服务器

2022-09-06 07:57:10

生命周期SpringIoC

2021-03-24 10:25:24

优化VUE性能

2023-03-08 07:46:53

面试官优化结构体

2021-08-02 08:34:20

React性能优化

2021-12-02 08:19:06

MVCC面试数据库

2022-02-11 19:06:29

MySQL索引面试官

2022-11-15 17:45:46

数据库MySQL

2022-10-10 12:31:37

服务器性能

2024-08-05 01:26:54

2020-09-17 17:53:12

面试ArrayList数组

2024-03-07 17:21:12

HotSpotJVMHot Code

2020-08-03 07:04:54

测试面试官应用程序

2019-12-02 10:51:11

Redis存储系统

2021-09-28 13:42:55

Chrome Devwebsocket网络协议

2019-11-21 08:40:44

面试官优化性能

2022-07-13 17:47:54

布局Flex代码

2020-11-05 07:56:01

内存主类结构

2021-03-01 18:42:02

缓存LRU算法
点赞
收藏

51CTO技术栈公众号