0

0

Linux系统性能瓶颈综合分析_多维指标解析【教程】

冷漠man

冷漠man

发布时间:2026-01-02 16:01:24

|

234人浏览过

|

来源于php中文网

原创

Linux性能瓶颈需综合多指标关联分析:CPU高但响应不卡应查runq-sz和cs;iostat中r_await/w_await差异定位读写瓶颈;pgpgin/pgpgout持续>10M/s提示隐性内存压力;TCP重传需netstat与ss联合分析。

linux系统性能瓶颈综合分析_多维指标解析【教程】

Linux系统性能瓶颈不能靠单个指标判断,top 看 CPU 高 ≠ 真正的瓶颈,iostat 显示 %util 100% 也不一定代表磁盘慢——关键在指标间的关联性与时间维度上的变化趋势。

CPU高但响应不卡?先看 runq-szcs 是否同步飙升

CPU 使用率高,服务却没明显延迟,大概率是任务在就绪队列里排队,而非真正在执行。这时候要查运行队列长度和上下文切换次数:

  • vmstat 1 中关注 runq-sz(就绪队列长度):持续 > CPU 核数 × 2,说明有大量任务等待调度
  • cs(context switch/sec)异常高(比如 > 50k/s),配合 pidstat -w 1 查具体进程,常指向频繁唤醒、锁竞争或短生命周期线程泛滥
  • 注意区分 sy(system time)占比:若远高于 us,问题往往出在内核态,如中断处理、内存回收或驱动阻塞

iostat -x 1awaitr_await/w_await 的差异必须分清

await 是请求从发出到完成的平均耗时(含排队 + 服务时间),但它掩盖了读写行为的不对称性:

  • r_await 高但 w_await 正常 → 读密集型瓶颈,可能缺缓存、随机读多、或存储介质(如 HDD)响应差
  • w_await 高且 %util 接近 100% → 写限流或后端存储吞吐见顶;但若 %util 低而 w_await 高,更可能是文件系统层问题(如 XFS 日志阻塞、ext4 barrier 开启+机械盘)
  • avgqu-sz 持续 > 1 表示 I/O 请求长期积压,此时 await 失去参考价值,应结合 blktraceiosnoop 定位具体设备/请求模式

内存看似充足,pgpgin/pgpgout 却持续走高?警惕隐性换页压力

free -h 显示可用内存充足,不代表没有内存压力。真正危险的是内核频繁进行页面换入换出:

Amazon Nova
Amazon Nova

亚马逊云科技(AWS)推出的一系列生成式AI基础模型

下载
  • vmstat 1 观察 pgpgin(每秒换入 KB)和 pgpgout(每秒换出 KB):持续 > 10M/s 是强信号
  • 即使 si/so(swap in/out)为 0,pgpgin 高也意味着应用在反复申请/释放内存,触发直接回收(direct reclaim),拖慢分配路径
  • 配合 slabtopkmalloc-*dentry 占用是否异常,常见于未关闭 vm.swappiness=0 时的脏页回写竞争,或容器环境未设 memory.limit_in_bytes

netstat -sss -i 联合看 TCP 重传,别只盯 retransmit 总数

TCP 重传率升高不等于网络丢包,可能是本地拥塞控制、接收窗口不足或应用读取延迟导致:

  • netstat -s | grep -i "retransmitted" 给总量,但需结合 ss -i 查单连接的 retrans 字段,确认是否集中在少数长连接上
  • 若某连接 retrans 高且 rcv_space 小(如 ss -m 可见 rcv_rtt 异常大
  • tcprcvdatanotimeout(来自 /proc/net/snmp)突增,大概率是应用层 ACK 延迟,而非链路问题
watch -n 1 'echo "=== CPU ==="; vmstat 1 2 | tail -1; echo "=== IO ==="; iostat -x 1 2 | tail -1; echo "=== MEM ==="; vmstat 1 2 | tail -1 | awk "{print \$9,\$10,\$11,\$12}"; echo "=== NET ==="; ss -i | grep -v "State" | head -3'

多维指标不是堆在一起看,而是按「请求路径」串起来:用户请求 → CPU 调度 → 内存分配 → 存储 I/O → 网络收发。漏掉任一环节的时间戳对齐(比如用 perf record -e sched:sched_switch 同步抓取),就容易把果当因。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

519

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

404

2024.03.13

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

371

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

563

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

473

2023.08.10

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1345

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

700

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.4万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号