找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1535

积分

0

好友

195

主题
发表于 昨天 16:36 | 查看: 6| 回复: 0

当测试环境告警响起,或是线上接口响应突然变慢,面对Linux服务器的黑色终端,第一反应不应是盲目重启或猜测。高效的工程师依赖精准的诊断工具来为系统“号脉”。一个完整的Linux性能监测体系通常涵盖CPU、内存、磁盘I/O和网络四大核心模块,本文将梳理从基础到进阶的常用命令行工具,助你快速定位性能瓶颈。

CPU监测:定位高负载进程

CPU是系统的运算核心,其高使用率往往是系统卡顿的首要嫌疑。

常用工具:tophtop

  • top:最经典的实时系统监控工具,几乎所有发行版都预装。运行top命令,可以看到系统平均负载和各个进程的CPU、内存占用情况。按下大写的 P 键可以按CPU使用率对进程进行排序。
  • htop:可以看作是 top 的增强版,提供了更友好的交互界面。它支持鼠标操作,并以彩色进度条直观展示每个CPU核心的利用率,是许多运维和开发者的首选。

进阶工具:pidstatmpstat

  • mpstat:对于多核服务器,mpstat 能详细报告每个CPU核心的状态。使用命令 mpstat -P ALL 1 可以每秒刷新一次所有CPU的统计数据,有助于排查某个核心软中断过高等不均衡问题。
  • pidstat:来自 sysstat 工具包。它可以更精细地监控特定进程的CPU消耗,并能区分用户态(%usr)和内核态(%system)的CPU使用比例,比 top 提供更深入的洞察。

内存监测:识别内存泄漏与Swap滥用

内存不足会导致系统频繁使用Swap交换分区,引发磁盘I/O飙升,从而使整体性能急剧下降。

常用工具:free
命令 free -h 可以快速查看系统内存使用概览。需要重点关注的不是“剩余内存”(free),因为Linux会利用空闲内存作为缓存(buff/cache)来提升性能。真正关键的是 可用内存available)的数值,以及Swap分区是否被大量使用。

进阶工具:vmstat
vmstat(虚拟内存统计)提供更全面的视角。运行 vmstat 1 每秒输出一次报告。其中 si(内存换入)和 so(内存换出)两列至关重要。如果它们的值长时间不为0,表明物理内存已耗尽,系统正在与Swap分区进行频繁的数据交换,这是内存瓶颈的明确信号。

磁盘I/O:揪出拖慢系统的读写操作

当应用逻辑和CPU看起来都正常,但响应依旧缓慢时,磁盘I/O很可能就是性能杀手。

常用工具:iostat
iostat -x 1 命令可以展示扩展的磁盘I/O统计信息。需要重点关注 %util 列,它表示设备的繁忙百分比。如果该值持续接近100%,表明磁盘I/O已饱和。此外,await 列(I/O请求的平均等待时间)数值过高,也直接反映了磁盘响应缓慢。

进阶工具:iotop
iostat 告诉我们磁盘很忙,而 iotop 则能揭示“谁”在忙。它的界面类似于 top,但专门用于实时显示每个进程的磁盘读写速率。使用 iotop -o 参数可以只显示正在进行I/O操作的进程,快速定位到疯狂写日志或进行大量数据读写的“元凶”。

网络监测:排查连通性与带宽瓶颈

对于分布式系统和网络服务,网络状态监控是运维 & 测试的日常基础。

常用工具:pingss

  • ping:用于测试网络连通性和延迟的基本工具。
  • ss:现代且高效的netstat替代品,用于查看套接字统计信息。命令 ss -ntlp 能快速列出所有TCP连接和监听端口,在排查大量并发连接时比netstat速度更快,是分析网络/系统连接状态的利器。

进阶工具:iftoptcpdump

  • iftop:用于实时监控本机与外部主机之间的网络带宽使用情况,可以直观地看到哪个连接或IP地址占用了大量流量。
  • tcpdump:网络问题深度排查的终极工具。通过抓取和分析网络数据包,可以诊断复杂的网络问题,如握手失败、异常丢包等,是掌握网络/系统底层真相的关键。

综合工具:“瑞士军刀”式的全能监控

如果觉得单独使用多个工具不够便捷,可以考虑以下综合性监控方案。

dstat
dstat 能够将CPU、磁盘、网络、内存等多种指标整合在一个界面中,以彩色列的形式实时刷新输出。它非常适合进行跨资源类型的关联性分析,例如观察网络流量激增是否同步引发了CPU或磁盘I/O的波动。

glances
这是一个基于Python开发的跨平台系统监控工具。它试图在一个终端屏幕内集中展示系统的全方位信息,包括CPU、内存、负载、磁盘I/O、网络流量,甚至传感器温度。glances 会使用绿色、黄色、红色来高亮显示潜在的性能瓶颈,如果你希望只安装一个工具来获得整体概览,它是一个不错的选择。其运行界面通过紧凑的布局和颜色编码,将关键指标一目了然地呈现出来。

总结与实践路线图

Linux性能调优是一门实践的艺术,熟悉工具是第一步。面对故障,可以遵循以下清晰路径:

  • CPU过高:先用 tophtop 定位高负载进程,再用 pidstat 分析该进程的详细CPU使用情况。
  • 内存不足:用 free -h 查看整体内存和Swap使用,用 vmstat 1 关注 si/so 确认是否存在频繁交换。
  • I/O缓慢:用 iostat -x 1 确认磁盘利用率(%util)和延迟(await),用 iotop -o 找出导致高I/O的进程。
  • 网络问题:用 ss 查看连接状态,用 iftop 分析流量,复杂问题则用 tcpdump 抓包深究。

掌握这些工具,意味着你拥有了从系统表象直抵问题根源的能力。无论是为了维护数据库/中间件/技术栈的稳定,还是保障整体服务的运维 & 测试质量,这套“工具箱”都能让你在应对性能危机时更加从容。

参考资料

[1] 服务器又双叒卡了?Linux 性能监测“全家桶”请查收!, 微信公众号:mp.weixin.qq.com/s/WgXGEDCzu-ENlfCReeeJ7Q

版权声明:本文由 云栈社区 整理发布,版权归原作者所有。




上一篇:Servlet、Filter与Listener:一站式掌握Java Web三大核心组件与安全应用
下一篇:春节发现 EvoMap:一个让 AI Agent 能力像基因一样进化的协议
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-23 09:01 , Processed in 0.573390 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表