当前位置:首页>Linux>Linux性能优化干货,从原理到工具的全方位解读

Linux性能优化干货,从原理到工具的全方位解读

  • 2026-09-15 18:59:16
Linux性能优化干货,从原理到工具的全方位解读

Linux性能优化干货

从原理到工具的全方位解读

DETAILED INTERPRETATION

—尚诚云课堂—

前言

你是否也曾遇到过这样的场景:服务器突然卡顿,应用延迟飙升,或者CPU像坐过山车一样忽高忽低?面对Linux系统的性能问题,很多人往往一头雾水,不知道从哪里下手排查。别急,今天这篇文章就是你的“救急手册”。

我们从最基础的系统巡检流程讲起,带你一步步了解如何通过uptime、dmesg、vmstat等常用工具,快速定位系统瓶颈。同时,还会深入剖析三个最经典的生产问题——I/O性能瓶颈、CPU飙升以及偶发性CPU飙升,用实际案例教你如何抽丝剥茧,找到问题根源。

无论你是运维新手还是资深工程师,这份干货都能帮你建立一套清晰、实用的性能排查思路。接下来的内容全是硬核知识,但我会用最通俗的方式讲给你听,保证你看得懂、学得会、用得上。

Linux性能优化干货

通用巡检流程+三大经典场景

01

常见系统巡检流程

  • 查看系统基本运行信息

  • 查看内核是否存在报错

  • 查看虚拟内存使用情况

  • CPU亲和力巡检

  • 检测进程摘要

  • 查看内存使用情况

  • 查看I/O使用情况

  • 查看网卡使用情况

02

详解生产环境常见问题

  • 应用程序延迟升高

  • 系统操作卡顿

  • 持续的偶发性系统卡顿问题排查

Linux性能优化干货

常见系统巡检流程

01

查看系统基本运行信息

在正式介绍这些生产案例之前,我们先了解一些比较常见的系统巡检步骤,在日常监控巡检的时候,我们一般先查看系统的运行基本信息,所以我们优先会执行uptime查看系统整体运行情况和负载,以笔者的输出为例,可以看到uptime输出显示如下消息:

1. 系统时间为23:08:23

2. 当前系统运行1天4小时多

3. 当前系统有3个登录会话

4. 系统近1min、15min、30min的系统负载稳定在0

uptime指令可以反映一个时间段的系统运行负载,一般来说,若近1min的值远远低于15和30min的值,这可能就说明我们错过了系统反馈的故障:

02

查看内核是否存在报错

然后我们就通过dmesg |tail查看内核环形缓冲区的消息,通过该指令可以看到一些系统消息,检查运行时报错,以笔者服务器的输出结果来看:

1. 网络连接初始化失败

2. hv_balloon动态内存信息

3. Time jumped backwards, rotating即因为某个原因系统向后跳动了

4. 系统缓存清理

1. swpd: 已使用的交换空间大小,如果该值持续增长,说明物理内存不足

2. free: 空闲的物理内存大小

3. buff: 用于文件系统缓冲的内存大小

4. cache: 用于缓存文件数据的内存大小

针对磁盘I/O参数组:

1. bi/bo: 每秒从磁盘读取/写入的数据块数

2. si/so: 每秒从磁盘交换进/出内存的数据块数,如果这两个值持续大于0,说明内存不足

CPU参数组:

1. us: 用户态CPU使用百分比

2. sy: 内核态CPU使用百分比

3. id: CPU空闲百分比

4. wa: 等待I/O完成的CPU时间百分比,如果该值持续较高,说明存在I/O瓶颈

从以上输出可以看出,系统当前状态良好:CPU空闲率100%,无进程等待I/O,无内存交换发生。

03

CPU亲和力巡检

CPU亲和力是指进程或线程绑定到特定CPU核心的特性。通过检查各CPU核心的使用率分布,可以判断是否存在CPU负载不均衡的情况。执行mpstat -P ALL 1可以查看每个CPU核心的使用情况。

从笔者的输出结果来看,各CPU核心的使用率分布相对均匀,没有出现某个CPU核心使用率异常飙升的情况。如果某个CPU核心使用率持续接近100%,而其他核心相对空闲,则可能说明存在以下问题:

1. 单线程应用无法充分利用多核CPU资源

2. 进程调度问题导致负载集中在特定核心

3. 某个线程在特定核心上出现死循环或计算密集型任务

从平均值来看,系统整体CPU使用率较低,各核心负载分布相对均衡,说明CPU资源利用合理。

04

检测进程摘要

pidstat命令用于监控进程的CPU、内存、I/O等资源使用情况。与top命令不同,pidstat不会清屏刷新,而是以滚动方式显示进程信息,便于观察一段时间内的进程负载变化。执行pidstat 1可以每秒输出一次进程统计信息。输出字段说明:

1.UID: 进程所属用户ID

2.PID: 进程ID

3.%usr: 进程在用户态消耗的CPU百分比

4· %system: 进程在内核态消耗的CPU百分比

5· %guest: 进程在虚拟机中消耗的CPU百分比

6.%wait: 进程等待CPU的时间百分比7. %CPU: 进程总的CPU使用百分比8.CPU: 进程当前运行的CPU核心编号9.Command: 进程命令名称

从输出结果可以看出:

1. mysqld进程(PID 267)在系统态有较高的CPU使用率,说明该进程主要进行内核态操作

2. frpc进程(PID 171)在用户态有CPU使用,说明该进程主要进行用户态计算

3. 从平均值来看,两个进程的CPU使用率都不高,系统负载较轻。

05

查看内存使用情况

free命令用于查看系统内存使用情况,包括物理内存和交换空间的使用统计。一般情况下我们使用free -m以MB为单位查看内存使用情况。输出字段说明:

 1.total: 内存总量

 2.used: 已使用的内存

 3.free: 空闲的内存

 4.shared: 多个进程共享的内存

 5.buff/cache: 用于缓冲和缓存的内存

6.available: 可用内存(包括可回收的缓存和缓冲区内存)

从输出结果可以看出:

1. 物理内存总量为7876MB,已使用828MB,空闲6915MB,内存使用率较低

2. buff/cache占用289MB,这部分内存可以在需要时被回收

3. available内存为7048MB,说明系统有充足的可用内存

4. 交换空间总量2048MB,已使用0MB,说明物理内存充足,未发生内存交换

需要注意的是,Linux系统会尽可能利用空闲内存作为文件系统缓存,因此free值较低并不一定表示内存不足。应重点关注available字段和交换空间使用情况来判断内存是否充足。

06

查看I/O使用情况

iostat命令用于监控系统设备的I/O负载情况。使用iostat -xz 1可以详细查看磁盘的读写性能指标,其中:

1. x: 显示扩展统计信息

2. -z: 跳过无活动的设备

3. 1: 每秒刷新一次

主要监控指标包括:

1. r/s、w/s: 每秒读/写请求数

2. rkB/s、wkB/s: 每秒读/写的数据量(KB)

3. await: I/O请求的平均等待时间(ms),包括排队时间和处理时间

4. avgqu-sz: 平均I/O请求队列长度,如果大于1说明设备可能已饱和

5. util: 设备使用率百分比,如果持续高于80%说明设备可能成为瓶颈

从输出结果可以看出:

1. 各磁盘设备的I/O请求很少,r/s和w/s值都很低

2. await值都很小,说明I/O响应时间很短

3. util值都很低,说明磁盘设备使用率很低,没有出现瓶颈

4. avgqu-sz值都小于1,说明I/O请求队列长度正常

整体来看,系统磁盘I/O性能良好,没有出现性能瓶颈。

07

查看网卡使用情况

sar命令可以监控网络接口的流量情况。使用sar -n DEV 1可以每秒输出网络接口的统计信息。

输出字段说明:

1.IFACE: 网络接口名称

2.rxpck/s: 每秒接收的数据包数量

3.txpck/s: 每秒发送的数据包数量

4.rxkB/s: 每秒接收的数据量(KB)

5.txkB/s: 每秒发送的数据量(KB)

6.%ifutil: 网络接口使用率百分比

从输出结果可以看出:

1. lo接口是本地回环接口,用于本机通信

2. eth0是实际的网络接口

3. 数据包收发量和数据流量都比较小

4. %ifutil值为0,说明网络接口使用率很低,没有出现网络瓶颈

为了更准确地判断网络性能,还需要结合网络带宽信息进行分析。

上述指标反映了网络I/O的整体情况,实际上我们可能还需要结合带宽进行判断。ethtool命令可以查看网卡的详细信息,包括连接速度、双工模式等。

首先需要安装ethtool工具:

然后通过ethtool eth0查看网卡的带宽连接速度:

从输出结果可以看出:

1. 网卡连接速度为10000Mb/s(即10Gb/s),这是一个很高的带宽

2. 工作模式为全双工(Full Duplex)

3. Link detected: yes 表示网络连接正常

结合之前的sar输出数据,eth0接口的rxkB/s和txkB/s值都很小,远低于10Gb/s的带宽上限,说明网络带宽使用率很低,网络资源充足。

结语

Linux性能优化不是玄学,而是一套有章可循的方法论。从日常巡检到问题排查,掌握正确的工具和思路,就能让系统跑得更稳、更快。希望这篇文章能成为你技术路上的“工具箱”,遇到问题时随时翻阅,从容应对。如果你有独到的排查经验,欢迎留言分享,咱们一起进步!

👇扫码添加老师微信,获取你的专属学习计划!

最新文章

随机文章