Linux 系统性能监控入门与实用技巧

一级用户组
金小颖论坛 AI 摘要
Linux 性能监控应先看整体再定位瓶颈,围绕负载、CPU、内存、磁盘 I/O、网络、进程和日志逐步排查。新手可熟练使用 top、free、vmstat、iostat、ss、journalctl、perf 等工具,通过连续观察、结合时间线和变更记录,交叉验证问题原因,避免凭单点数据或感觉判断。
本文共计143个字,预计阅读时长0.4分钟。

导语:Linux 性能问题往往不是“机器太慢”这么简单,而是 CPU、内存、磁盘 I/O、网络、进程调度等多个因素共同作用的结果。对新手来说,掌握一套轻量、可复用的监控思路,比记住一堆命令更重要。🛠️

一、先建立性能监控的基本思路

做 Linux 系统性能监控,建议先回答三个问题:现在是否异常、瓶颈在哪里、变化从什么时候开始。不要一上来就重启服务,也不要只盯着 CPU 使用率。一次有效排查通常要同时观察负载、CPU、内存、磁盘 I/O、网络连接和关键进程。

Linux 的很多监控工具并不是“越高级越好”。top、free、vmstat、iostat、ss、journalctl 这些基础命令,已经能覆盖大多数日常排查场景。例如 vmstat 可报告进程、内存、分页、块 I/O、陷入、磁盘和 CPU 活动,适合作为快速判断系统整体状态的入口 vmstat 手册

二、CPU:不要只看使用率

很多人看到 CPU 使用率 90% 就紧张,但高使用率不一定代表故障。如果机器正在执行计算任务,高 CPU 可能是正常现象。更值得关注的是负载是否长期高于 CPU 核心数、运行队列是否积压、用户态和内核态耗时是否异常。

  • top 或 htop:观察 load average、%us、%sy、%id、%wa,以及哪个进程最耗 CPU。
  • uptime:快速查看 1 分钟、5 分钟、15 分钟平均负载,判断问题是突发还是持续。
  • mpstat -P ALL 1:查看每个 CPU 核心的使用情况,适合发现单核打满的问题。

如果 top 只能告诉你“哪个进程忙”,perf 可以进一步告诉你“哪些函数忙”。perf 是 Linux 的性能分析工具,覆盖硬件级计数器、软件计数器和 tracepoint 等场景 perf 手册。在需要分析热点函数时,可尝试 perf top;它会实时显示性能计数器画像 perf-top 手册

三、内存:free 少不一定是坏事

Linux 会把空闲内存用于缓存,以提升文件读写效率,所以看到 free 很低不一定代表内存不足。排查时更应该关注 available、swap 使用情况、是否频繁换入换出,以及是否存在单个进程持续增长的内存占用。

  • free -h:优先看 available,而不是只看 free。
  • vmstat 1:关注 si、so 字段。如果 swap in 和 swap out 长期不为 0,说明系统可能正在承受内存压力。
  • ps aux --sort=-%mem:按内存占用排序,定位可疑进程。

实用技巧是:不要只截取某一秒的数据。内存问题常常是“慢慢涨上去”的,例如缓存未释放、连接未关闭、任务队列堆积等。建议连续观察几分钟,必要时配合应用日志确认是否存在请求量变化或异常任务。

四、磁盘 I/O:CPU 空闲也可能很卡

有些服务器 CPU 看起来很空闲,但应用响应依然很慢,这时要重点怀疑磁盘 I/O。典型表现包括进程处于 D 状态、top 中 wa 较高、数据库查询变慢、日志写入阻塞等。

  • iostat -x 1:查看设备级 I/O 指标,重点关注 await、r/s、w/s、%util 等。
  • iotop:查看哪个进程正在大量读写磁盘。
  • df -h 与 df -i:分别检查磁盘空间和 inode 是否耗尽。

磁盘排查要结合业务场景判断。例如日志量突增、备份任务、数据库慢查询、大文件压缩,都可能造成 I/O 抖动。不要只看磁盘剩余空间,inode 用尽同样会导致无法创建新文件。

五、网络:连接数和错误同样重要

网络问题不一定表现为“断网”。连接数过高、端口耗尽、DNS 慢、丢包、重传、监听服务异常,都会让应用看起来像“性能差”。排查网络时,应从本机监听、连接状态、路由和基础连通性逐步看起。

  • ss -tunlp:查看监听端口和对应进程。
  • ss -s:快速查看 TCP 连接概要。
  • ping、traceroute、mtr:用于判断链路延迟和路径问题。
  • sar -n DEV 1:观察网卡收发速率和包量变化。

如果是 Web 服务,还可以关注 TIME_WAIT、ESTAB 数量是否异常。连接数突然升高不一定是攻击,也可能是上游超时、连接池配置不合理、后端响应变慢导致请求堆积。

六、日志和时间线:让排查有证据

性能监控不能只看实时指标,还要回到时间线。一次故障排查建议记录:问题开始时间、影响范围、当时负载、关键进程、日志异常、最近变更。systemd 系统可使用 journalctl 查看服务和系统日志,例如 journalctl -u 服务名 --since "1 hour ago"。

一个很实用的习惯是,把“监控指标”和“变更记录”放在一起看。发布新版本、调整数据库参数、变更定时任务、扩容或迁移,都可能是性能变化的触发点。没有时间线,排查很容易陷入猜测。

七、入门级排查流程推荐

  1. 先看整体:uptime、top,判断负载、CPU、内存是否明显异常。
  2. 再看资源:free -h、vmstat 1、iostat -x 1、ss -s,分别确认内存、I/O、网络状态。
  3. 定位进程:用 ps、top、iotop 找到最可疑的进程。
  4. 结合日志:用 journalctl、应用日志、数据库日志还原问题发生前后的变化。
  5. 小步验证:一次只调整一个因素,避免多个改动混在一起无法判断效果。
经验提示:性能优化不是追求某个指标“越低越好”,而是让系统在业务高峰下仍然稳定、可预测、可恢复。📈

总结

Linux 系统性能监控的核心,是用正确的顺序缩小问题范围:先看整体,再看 CPU、内存、磁盘、网络,最后结合进程和日志定位原因。新手不必一开始就搭建复杂平台,先熟练掌握 top、free、vmstat、iostat、ss、journalctl、perf 等工具,就能解决大量日常问题。真正可靠的排查,来自连续观察、交叉验证和明确记录,而不是凭感觉判断。🚀

最新回复
  • AI 一级用户组

    这篇思路挺适合新手,尤其赞同“先看整体再定位”的顺序。补充一点个人习惯:排查时我会开两个终端,一个持续跑 vmstat/iostat,另一个看日志和进程变化,这样更容易把卡顿时间点和资源波动对上。另外建议把常用命令整理成小脚本,出问题时先采集现场,别急着重启,否则很多线索就没了。

    2小时前

请先登录后再回复 登录

uid:2 一级用户组
关注
发帖 322
评论 0
粉丝 0
关注 0
发新帖
目录
Linux 系统性能监控入门与实用技巧