• 作者:老汪软件技巧
  • 发表时间:2024-11-09 15:02
  • 浏览量:

在数字时代,计算机性能的提升似乎永无止境,但并非每个人都能跟上硬件更新的步伐。对于许多用户来说,如何在有限的预算内让现有的Linux系统运行得更快、更流畅,成为了一个亟待解决的问题。本文将分享简单实用的Linux系统优化技巧,不仅能够显著提高系统的响应速度,还能延长旧设备的使用寿命,让你的老旧电脑重获新生。无论你是Linux新手还是有一定经验的用户,这些技巧都将帮助你更好地掌握自己的系统,享受更加高效、愉悦的使用体验。让我们一起探索,如何用最小的成本实现最大的性能提升吧!

优化导读

性能优化是个系统工程,总是牵一发而动全身,它涉及了从程序设计、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都有可能出问题,而且很有可能多个组件同时出问题。

讲解 Linux 性能的基本指标、工具,以及相应的观测、分析和调优方法。包括 CPU 性能、磁盘 I/O 性能、内存性能以及网络性能。

系统性能问题,只要你理解了应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体性能的全局观。

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

随着应用负载的增加,系统资源的使用也会升高,甚至达到极限。而性能问题的本质,就是系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。性能分析,其实就是找出应用或系统的瓶颈,并设法去避免或者缓解它们,从而更高效地利用系统资源处理更多的请求。

性能分析六个步骤:

(1)选择指标评估应用程序和系统的性能;

(2)为应用程序和系统设置性能目标;

(3)进行性能基准测试;

(4)性能分析定位瓶颈;

(5)优化系统和应用程序;

(6)性能监控和告警。

系统负载高如何排查原因__系统负载怎么算

平均负载实操

1.查看系统负载:uptime,top

平均负载是:指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。所以,它不仅包括了正在使用 CPU的进程,还包括等待 CPU和等待 I/O的进程。

你可以简单理解为,平均负载其实就是平均活跃进程数,即单位时间内的活跃进程数。

最后三个数字,依次是过去1分钟、5分钟、15分钟的平均负载(Load Average)

平均负载最理想的情况是等于 CPU个数。

查询CPU个数:

$ grep 'model name' /proc/cpuinfo | wc -l

# -d 参数表示高亮显示变化的区域

$ watch -d uptime

16:57:20 up 7:02, 1 user, load average: 0.92, 0.50, 0.41

我们看到最近一分钟的平均负载达到了0.92,接近单cpu满负荷,而最近5分钟平均负载是0.50,最近15分钟是0.41,说明这段时间的系统负载一直在上升,并且上升很快。如果15分钟内平均负载高于最近1分钟内平均负载,则说明系统负载呈下降趋势。

负载情况判断:

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

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

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

当平均负载高于 CPU 数量70%的时候,你就应该分析排查负载高的问题了。

平均负载与CPU使用率

CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;大量等待 CPU 的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。

分析工具:

用 iostat、mpstat、pidstat 等工具,找出平均负载升高的根源stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。

系统负载高如何排查原因__系统负载怎么算

而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用到这个包的两个命令 mpstat 和 pidstat。

mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有CPU的平均指标。pidstat 是著名的采集软件 systat的组件之一。用于监控全部或指定进程的 CPU、内存、线程、设备 IO 等系统资源的占用情况。pidstat 首次运行时显示自系统启动开始的各项统计信息,之后运行 pidstat 将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

默认情况下:sysstat是没有安装,如果提示命令不存在,则需要安装组件

yum install sysstat

安装完后,执行mpstat -P ALL 5

运行mpstat查看cpu使用率的变化情况。 -P ALL表示监视所有cpu,后面数字5表示间隔5秒输出一次最新数据

系统负载怎么算_系统负载高如何排查原因_

使用pidstat确定到底哪个进程导致的CPU使用率过高/iowait过高?

语法:pidstat [ 选项 ] [ ] [ ]

-u 表示输出cpu使用率,最后的数字5 1表示输出间隔5秒,输出1次(top命令也有类似功效)

pidstat -u 5 1

系统负载高如何排查原因_系统负载怎么算_

看出java,ydservice两个进程占用的CPU比较高

其中:腾讯云默认会在所有云主机上装一个 YDService,提供一些诸如异地登录、暴力破解等基础的主机安全能力,一直是通过 systemd 来管理。

用iostat -x /dev/sda1来观看磁盘I/O的详细情况:

系统负载高如何排查原因__系统负载怎么算

查看网络收发情况:sar

系统负载怎么算_系统负载高如何排查原因_

总结:

通过uptime,top等命令观察系统平均负载情况,分析大致可能的引起系统负载过高的类型:CPU 密集型、I/O 密集型或其他。

使用mpstat查看 CPU 使用率的变化情况。

pidstat,报告Linux任务(进程)的统计信息:I / O,CPU,内存等。

系统负载高如何排查原因__系统负载怎么算

也可以使用最新的监控和分析工具dstat 是一款比较全面的性能监控工具,是排查服务器负载异常的利器!

yum install dstat

#查看时间、CPU、磁盘读写、IO、负载、内存、网络、最高的CPU占用和最高的内存占用

dstat -tcdrlmn --top-cpu --top-mem

系统负载怎么算__系统负载高如何排查原因

#展示当前最耗block I/O的进程名、PID和读写容量以及CPU占比

即最高磁盘IO的进程。

``

dstat  --top-bio-adv

#展示耗费CPU时间最多的进程名和耗费时间(ms)

dstat --top-cputime

--``top`` -io 展示最耗IO的进程名和IO读写信息,被统计的IO信息包括blockIO和内存还有网络等全部


上一条查看详情 +一款 C# 编写的神经网络计算图框架
下一条 查看详情 +没有了