我的测试学习站TEST LEARNING HUB
开始学习
首页/精华文章/8. 服务器监控指标怎么看

8. 服务器监控指标怎么看

性能测试不能只看 JMeter 报告,还必须看服务器监控指标。压测结果告诉你“系统表现如何”,服务器指标告诉你“为什么会这样”。如果响应时间升高、TPS 上不去、错误率上升,但你没有 CPU、内存、磁盘、网络、数据库、JVM、线程池等监控数据,就很难定位瓶颈。

面试中问服务器监控指标,重点是看你是否知道每个指标代表什么,以及它和性能现象之间的关系。

一、为什么要看监控

监控可以帮助判断:

  • 应用服务器是否打满;
  • 数据库是否瓶颈;
  • 是否频繁 GC;
  • 是否磁盘 IO 高;
  • 是否网络带宽不足;
  • 线程池是否耗尽;
  • 连接池是否不足;
  • 是否有异常日志;
  • 是否压测机成为瓶颈。

没有监控的压测结论不完整。

二、CPU 怎么看

CPU 高可能表示:

  • 计算逻辑重;
  • 线程过多;
  • 锁竞争;
  • 频繁 GC;
  • 序列化反序列化开销;
  • 加解密或压缩开销;
  • 死循环或代码问题。

如果 CPU 接近 90% 以上,同时响应时间升高,可能是应用 CPU 瓶颈。

如果 CPU 不高但响应慢,可能在等待数据库、网络、锁或外部服务。

三、Load 怎么看

Load 表示系统运行队列和不可中断任务压力。

如果 Load 明显高于 CPU 核数,说明系统压力较大。

但 Load 要结合 CPU、IO 一起看。Load 高不一定全是 CPU,可能是 IO 等待导致。

四、内存怎么看

内存关注:

  • 使用率;
  • 可用内存;
  • swap;
  • 内存持续增长;
  • OOM;
  • 缓存占用。

如果内存持续增长不释放,可能有内存泄漏。

如果发生 swap,系统性能会明显下降。

五、磁盘 IO 怎么看

磁盘 IO 高会导致请求变慢。

关注:

  • 磁盘读写吞吐;
  • IOPS;
  • IO wait;
  • 磁盘使用率;
  • 日志写入量;
  • 数据库磁盘压力。

数据库、日志系统、文件上传下载场景尤其要关注 IO。

六、网络 IO 怎么看

网络问题可能导致:

  • 响应时间波动;
  • 连接超时;
  • 传输慢;
  • 网关 502/504;
  • 带宽打满。

文件下载、图片服务、大响应体接口要重点看网络带宽。

七、JVM 指标怎么看

Java 系统要关注 JVM:

  • 堆内存使用;
  • Young GC 次数和耗时;
  • Full GC 次数和耗时;
  • 线程数;
  • 类加载;
  • OOM;
  • GC 暂停时间。

如果响应时间周期性抖动,可能和 GC 有关。

Full GC 频繁会严重影响性能。

八、线程池和连接池

应用常见瓶颈:

  • Tomcat 线程池满;
  • 业务线程池队列堆积;
  • 数据库连接池打满;
  • Redis 连接池不足;
  • HTTP 客户端连接池不足。

表现为 CPU 不一定高,但请求排队、响应时间上升。

九、数据库和中间件监控

数据库关注:慢 SQL、连接数、锁等待、CPU、IO、主从延迟。

Redis 关注:QPS、命中率、连接数、慢命令、热 key、大 key。

MQ 关注:消息堆积、消费速度、失败重试、消费者状态。

这些都可能影响系统性能。

十、常用监控工具

常见工具:

  • top;
  • htop;
  • vmstat;
  • iostat;
  • sar;
  • free;
  • netstat/ss;
  • nmon;
  • Prometheus;
  • Grafana;
  • SkyWalking;
  • Pinpoint;
  • Arthas。

面试中不需要都会,但要知道用途。

十一、面试回答模板

如果面试官问“服务器监控指标怎么看”,可以这样回答:

性能测试中我不会只看 JMeter 报告,还会同步看服务器监控。应用服务器主要看 CPU、Load、内存、磁盘 IO、网络 IO、线程数、线程池和连接池;Java 系统还要看 JVM 堆内存、Young GC、Full GC 和 GC 耗时;数据库看慢 SQL、连接数、锁等待、CPU 和 IO;Redis 看命中率、热 key、大 key和连接数;MQ 看消息积压和消费速度。如果响应时间升高但 CPU 不高,我会重点看数据库、连接池、线程池、网络或外部依赖;如果 CPU 打满,则考虑代码计算、锁竞争或 GC。

十二、常见追问

追问:CPU 不高但响应时间很慢可能是什么原因?

可能在等待数据库、缓存、MQ、外部接口、锁、连接池或网络。

追问:Full GC 频繁有什么影响?

会导致应用暂停,响应时间抖动甚至超时。

追问:压测机也要监控吗?

要。如果压测机 CPU、内存或网络打满,压测结果不可信。

十三、练习清单

  1. 用 top 看 CPU;
  2. 用 free 看内存;
  3. 用 iostat 看 IO;
  4. 看网络带宽;
  5. 看 JVM GC;
  6. 看线程池;
  7. 看连接池;
  8. 看数据库慢 SQL;
  9. 看 Redis 命中率;
  10. 准备监控指标回答。

服务器监控指标是性能分析的证据。没有监控,性能测试只能停留在结果描述,无法解释原因。

配套刷题: