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)的进程。
那么我们应该怎么取查看系统的负载呢?
结果就是上面的图,那么都代表了什么意思呢?
如果 1 分钟、5 分钟、15 分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。
如果 1 分钟的值远小于 15 分钟的值,就说明系统最近 1 分钟的负载在减少,而过去 15 分钟内却有很大的负载。
如果 1 分钟的值远大于 15 分钟的值,就说明最近 1 分钟的负载在增加,这种 增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。一旦 1 分钟的平均负载接近或超过了 CPU 的个数,就意味着系统正在发生过载的问题,这时就 得分析调查是哪里导致的问题,并要想办法优化了。
其实总结起来就很简单,如果 load average 参数三个参数区别不大,那么就是很平稳,如果第一个小于第三个并且差值很大,那么负载很大,如果第一个值远大于第三个只,那么就得需要排查一下,会不会出现超出负载的状况了。
那么这个平均负载什么时候是最合适的呢?
其实这个平均负载最合适的状态就是和 CPU 的个数持平,怎么查看 CPU 的个数呢?
我们可以看到,这个逻辑 CPU 的个数是 8个,
当平均负载比 CPU 个数还大的时候,系统已经出现 了过载。在观察负载数据时,我们有三个时间点的数据,因此 都要看。三个不同时间间隔的平均值,其实给我们提供了,分析系统负载趋势的 数据来源,让我们能更全面的理解目前的负载状况。
当平均负载高于 CPU 数量 70% 的时候,你就应该分析排查负载高的问题了(70% 这个数字并不是绝对的,最推荐的方法)。
其实 Linux 也是有很多的系统压力测试工具的。
比如:sysstat 工具,就是,用来监控和分析系统的性能。
至于工具怎么用,了不起在这里就不多做介绍了,毕竟这个内容不是咱们今天想说的。
其实主要就是来定位哪个异常的进程,然后吧这个异常的线程直接给他干掉,先保证 Linux 的正常,然后在找这个异常进程出现的原因,最终解决掉这个问题。
CPU 使用率
上面我们说到了这个 CPU 使用率,那么什么是 CPU 使用率呢?
CPU 使用率 = 1- (空闲时间/总 CPU 时间)
其实还可以使用 top 命令来查看系统总体的CPU和内存使用情况,以及各个进程的资源使用情况。
知道怎么通过 CPU 来优化 Linux 性能了么?学会了么?