Linux服务器性能监控实战:CPU内存磁盘IO瓶颈定位方法

Linux服务器性能监控是服务器运维的基本功,出问题先得说清瓶颈在CPU、内存、磁盘IO还是网络。定位要用数据说话:每类指标都有典型特征,配合多工具交叉验证,几分钟就能圈定范围。本文按CPU、内存、磁盘三个维度拆解常用的Linux性能监控命令与判断方法。

性能监控工具清单与排查顺序

先看整体,再看进程,最后追调用栈。整体层面用top、vmstat、sar;进程层面用pidstat、ps;调用栈层面用perf。排查路径固定为:先判断哪个资源耗尽,再定位是哪个进程,最后分析该进程为何占资源。

top          # 整体负载:CPU、内存、load average
vmstat 2 5   # 系统级:runnable队列、换页、IO等待
pidstat -u 2 3  # 进程级CPU
pidstat -d 2 3  # 进程级磁盘IO
iostat -x 2 3   # 磁盘延迟与利用率

CPU瓶颈定位:user、system与iowait三态判断

用top查看%Cpu行:us高说明应用计算密集;sy高说明系统调用频繁,常见于上下文切换多或内核态开销大的场景;wa高说明CPU在等磁盘IO,问题其实在存储层;si/so高说明内存在频繁换页。定位到进程后,用pidstat观察单进程CPU占用,perf top看热点函数。

内存与swap分析:可用内存不等于空闲内存

Linux会用page cache自动吸收空闲内存,free -m里available才是真实可分配内存。判断内存压力要看两个信号:swap使用量和si/so换页速率,出现持续非零即内存不足。用vmstat观察si与so,用ps按RSS排序找出高占用进程,必要时对进程做内存剖析。缓存回收策略通过sysctl调整min_free_kbytes与swappiness,改之前先确认真实瓶颈。

磁盘IO延迟与吞吐分析

iostat -x 1关注%util、await与w_await。%util高但await低说明吞吐打满,多为顺序IO为主;await高说明单次IO慢,多见于随机写或磁盘故障。定位到进程后再用pidstat -d看每个进程的IO量,确认异常源头。日志盘和业务盘建议分开,避免大日志文件抢IO。

一次CPU打满的排查实例

现象:Java服务CPU使用率100%。排查步骤:top确认java进程PID;pidstat -p确认CPU归属线程;jstack抓线程栈,找到长时间RUNNABLE的业务线程;结合日志确认高频代码路径。案例根因是循环里重复拼接大字符串,改为StringBuilder后CPU占用降到15%。定位的根因往往是代码热点,而不是机器性能不足。

监控数据沉淀:持续采样优于事后诊断

单机命令适合事后诊断,持续性监控建议接入采集系统保留历史曲线。基准数据每周留档,对比曲线能提前发现趋势:内存缓增、IO曲线斜率变大都是故障先兆。提前设定告警阈值比故障后复盘更有价值。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-xing-neng-jian-kong-shi-zhan-cpu-nei-cun-ci/

(0)
小编小编
上一篇 2小时前
下一篇 2小时前

相关推荐