检查Linux性能的命令是什么

来源:AI视频音频作者:永濑头衔:网络博主
导读:本期聚焦于永濑创作的《检查Linux性能的命令是什么》,敬请观看详情。在Linux系统运维和开发过程中,经常需要检查系统性能来排查卡顿、资源占用过高的问题。很多用户不清楚有哪些实用的命令可以快速获取CPU、内存、磁盘、网络等维度的性能数据。本文会详细介绍常用的Linux性能检查命令,讲解每个命令的核心参数、输出内容含义以及适用场景,还会给出实际使用示例,帮助用户快速掌握这些命令的使用方法,高效完成系统性能排查工作,解决日常遇到的性能相关问题。

在Linux系统运行过程中,程序响应缓慢、服务超时或者整机卡顿是运维人员和开发者经常遇到的问题。面对这类情况,不能仅凭感觉判断原因,而需要借助系统自带的性能检查命令,从CPU、内存、磁盘I/O以及网络等多个维度采集数据,逐步缩小排查范围。Linux提供了一组轻量且高效的命令行工具,它们能够实时展示资源使用情况、统计历史趋势,并帮助定位异常进程。下文将从CPU与负载、内存与交换分区、磁盘I/O、网络连接以及综合排查等角度介绍常用的检查命令和使用方式。

检查Linux性能的命令是什么

一、CPU与系统负载检查

CPU是系统计算资源的核心。当出现程序运行缓慢时,首先需要确认CPU是否过载,或者是否存在某个进程长时间占用处理核心。top命令是最常用的实时监控工具,默认每3秒刷新一次,输出区域包含系统总体负载、任务统计、CPU使用率、内存使用率以及按资源占用排序的进程列表。通过观察top中的load average数值可以快速判断系统负载是否偏高。该数值分为1分钟、5分钟、15分钟三个时间窗口,如果长时间明显超过CPU核心数,往往说明任务队列存在积压。

top命令还提供了灵活的筛选和观察参数。使用-d可以调整刷新间隔,例如希望每2秒获取一次数据,可以执行top -d 2;使用-p可以指定只监控某个进程,例如top -p 1234;使用-u可以过滤某个用户的进程。在交互界面中,还可以按“P”按CPU使用率排序,按“M”按内存使用率排序,这些操作能够快速找到最消耗资源的进程。需要注意的是,top适合实时观察,其输出是持续刷新的,不适合直接保存为静态报告。

除了top之外,vmstat命令更适合查看系统一段时间的整体统计趋势。vmstat可以同时展示CPU、内存、交换分区、进程状态和I/O信息。通过指定采样间隔和次数,例如vmstat 2 5,可以连续采集5次、每次间隔2秒的数据,从而观察性能指标是否出现波动。在输出结果中,us列表示用户态进程占用的CPU百分比,sy列表示内核态占用的CPU百分比,id列表示空闲CPU百分比,wa列表示等待I/O的CPU时间百分比。如果us和sy长期接近100%,说明CPU存在计算瓶颈;如果wa较高,则需要进一步关注磁盘I/O情况。

# 每2秒刷新一次系统性能数据
top -d 2

# 只监控PID为1234的进程
top -p 1234

# 查看指定用户的进程资源占用
top -u nginx

# 每2秒采样一次,共采样5次
vmstat 2 5

二、内存与交换分区检查

内存资源不足时,系统会频繁使用交换分区,导致整体性能明显下降。free命令是查看内存使用情况最直接的工具,它读取/proc/meminfo中的信息,并以表格形式展示物理内存和交换分区的总量、已用量、可用量、缓存与缓冲等数据。默认情况下free以KB为单位显示,数值较大不易阅读,因此通常配合-h参数使用,以人类可读的G、M等单位展示,例如free -h

在解读free输出时,不能只关注used列,还要注意available列。Linux会利用空闲内存作为缓存和缓冲区,以提高文件读写性能,这部分内存在需要时可以释放给应用程序使用。因此即使free列显示较低,只要available列仍然充足,系统内存压力就不算严重。如果available持续减少,并且交换分区used持续增加,就说明物理内存可能不足。使用free -s 3可以每隔3秒输出一次内存数据,便于观察内存变化趋势。

除了free命令之外,vmstat中也提供了与内存和交换相关的列。swpd列表示已使用的交换空间大小,free列表示空闲内存,buff和cache列表示缓冲和缓存大小。如果si(从磁盘交换入内存)和so(从内存交换出到磁盘)持续大于0,说明系统正在频繁进行交换操作,通常意味着物理内存已经不能满足当前负载需求。此时需要结合进程列表查找内存占用较高的进程,判断是否存在内存泄漏或配置不合理的情况。

# 以人类可读单位查看内存使用情况
free -h

# 每3秒输出一次内存数据,持续观察
free -s 3

# 查看内存和交换分区的详细统计,每2秒采样一次,共采样4次
vmstat 2 4

三、磁盘I/O性能检查

磁盘I/O性能直接影响数据库、文件服务以及大量日志读写的应用。即使CPU和内存资源充足,磁盘读写速度过慢也会造成请求堆积。iostat命令是分析磁盘I/O性能的核心工具,能够输出每块磁盘的读写速率、请求队列长度、服务时间以及使用率等指标。使用iostat -x 2可以查看扩展统计信息,并每2秒刷新一次。选项-x会显示更加详细的列,包括每秒读写次数、每秒读写扇区数、平均请求大小、平均队列长度以及%util等。

在iostat的扩展输出中,%util列表示磁盘的I/O使用率,该数值反映设备在采样周期内处于活动状态的时间比例。如果%util接近100%,说明磁盘几乎一直处于忙碌状态,可能存在I/O瓶颈。同时还需要关注await列,它表示I/O请求的平均等待时间,单位通常为毫秒。如果await明显偏高,说明请求排队时间较长。对于固态硬盘和机械硬盘,性能基线不同,需要结合具体硬件类型判断数值是否异常。此外,还可以观察rkB/s与wkB/s来了解实际读写吞吐量,判断当前负载是否已达到磁盘带宽上限。

当发现磁盘I/O繁忙时,需要进一步定位是哪个进程产生的读写压力。可以使用iotop或者结合pidstat等工具,但iostat本身已经能够提供设备级别的整体判断。如果%util长期处于高位,并且系统的wa指标也较高,通常需要从应用层优化查询、合并写入、增加缓存或升级磁盘硬件等方面入手。日常巡检中,建议定期记录iostat输出,以便对比不同时段的磁盘性能变化。

# 查看所有磁盘的扩展I/O统计,每2秒刷新一次
iostat -x 2

# 仅查看指定磁盘sda的I/O性能,每3秒采样一次,共采样3次
iostat -x sda 3 3

四、网络连接与综合排查

网络层面的性能问题通常表现为连接超时、端口无法访问、连接数异常增长或带宽跑满。netstat命令可以查看网络连接状态、监听端口和网络接口统计信息,适合排查连接异常和端口占用。使用netstat -tln可以列出所有处于监听状态的TCP端口,使用netstat -tun可以查看所有TCP和UDP连接,并以数字形式显示地址和端口,避免域名反解造成延迟。参数-t表示TCP,-u表示UDP,-l表示仅显示监听状态,-n表示使用数字地址。

在实际排查中,如果某个服务无法访问,可以先使用netstat确认该服务端口是否处于监听状态。如果端口没有监听,说明服务可能未启动或绑定地址不正确;如果端口存在大量SYN_RECV或TIME_WAIT状态,可能意味着并发连接过高或连接回收不及时。结合-p参数可以显示连接对应的进程PID和程序名,例如netstat -tunp,这能够快速找到是哪个进程占用了某个端口或建立了异常连接。

性能问题往往不是单一资源导致的,需要组合多个命令进行系统化排查。先使用top观察整体CPU和内存占用,找到高占用进程的PID;再使用vmstat查看系统整体I/O和上下文切换情况;接着使用iostat确认磁盘是否成为瓶颈;最后通过netstat检查该进程的网络连接状态。例如下面的组合示例展示了一个基本的排查顺序,可以根据实际场景调整命令和参数。

# 第一步:查看整体性能,找到高占用进程PID
top

# 第二步:查看系统整体IO和内存交换情况
vmstat 2 3

# 第三步:查看磁盘I/O性能
iostat -x 2

# 第四步:查看高占用进程的网络连接
netstat -tunp | grep 1234

Linux性能检查是一项需要结合具体业务场景不断积累经验的工作。本文介绍的top、vmstat、free、iostat和netstat等命令都是系统自带的基础工具,掌握它们的参数和输出指标,就能够在大多数性能异常场景中快速定位问题方向。除此之外,还可以借助日志分析、监控平台等手段实现长期趋势跟踪和自动告警。建议在日常运维中定期执行这些命令并记录基线数据,当性能发生突变时,通过对比历史数据往往能够更快找到原因。对于复杂的性能瓶颈,应按照CPU、内存、磁盘、网络的顺序逐层排查,避免仅凭单一指标得出片面结论。

Linux性能检查top命令vmstat命令iostat命令netstat命令修改时间:2026-07-24 08:42:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。