性能监控(操作系统层面-CPU)

性能监控(操作系统层面-CPU)

一、性能监控概述

1. 监控的重要性

  • 必须做监控:做性能测试必须监控,否则不知道问题出在哪里

  • 监控是性能测试的核心环节

2. 监控的两个维度

  • 操作系统维度:所有系统都必须监控(通用)

    • 监控对象:CPU、内存、网络、磁盘

    • 适用性:无论什么语言(PHP、Python、Java、Go、C)都需要

  • 应用程序维度:监控特定语言的应用程序

    • 如:Java应用、C++应用、Python应用等

二、监控方法论

1. 学习路径建议

  • 先学底层:先掌握操作系统原生命令

  • 再学工具:再学习高级监控工具/平台

  • 原因

    • 面试重点考察基础命令

    • 理解原理后才能更好使用高级工具

    • 类比:先学SQL再学可视化工具(如Navicat)

2. 监控原则

  • 掌握根本:底层原生命令是基础

  • 理解原理:知道监控数据如何计算得出

三、CPU监控详解

1. 监控命令:top

  • 功能:Linux下的实时交互式监控工具

  • 监控范围:CPU、内存、进程

  • 刷新频率:默认每3秒刷新一次

  • 退出方式 :按 Ctrl + C

2. CPU监控关键指标

(1) CPU使用率计算
  • 核心公式CPU使用率 = 100% - %ID

  • %ID(idle):CPU空闲率

  • 示例:%ID = 98.3%,则CPU使用率 = 1.7%

(2) CPU使用率各组成部分
指标 英文 含义 说明
%us user 用户进程占用CPU 用户自己启动的进程(如Tomcat、MySQL)
%sy system 系统进程占用CPU 操作系统自带进程
%id idle CPU空闲率 可直接计算CPU使用率
%wa wait CPU等待磁盘操作时间占比 值高表示磁盘慢/有瓶颈
%hi hard interrupt 硬中断时间占比 硬件(鼠标、键盘、网卡)中断造成
%si soft interrupt 软中断时间占比 软件(多线程上下文切换)造成
(3) 理解要点
  • 计算基础:CPU使用率基于时间统计

  • 计算方法:CPU处理任务时间 ÷ 总时间 = CPU使用率

  • 统计周期:top命令统计过去3秒的平均值

3. 多核CPU监控

(1) 关键前提
  • 每个CPU核心:同一时刻只能执行一个任务

  • 多核CPU:n个核心同一时刻可执行n个任务

(2) 多线程实现原理
  • 单核多线程:通过快速切换实现"同时"运行多个线程

  • 切换速度:CPU切换速度极快,人类无法感知

  • 实际并发:1万个并发线程用8核CPU处理 → 需要快速切换

(3) 查看多核使用情况
  • 默认显示:所有CPU核心的平均值

  • 按数字1:显示每个核心的详细使用情况

  • 作用

    • 查看CPU核心数

    • 分析各核心负载是否均衡

4. 进程监控与排序

(1) 进程列表
  • 显示内容:各进程消耗的CPU和内存数据

  • 默认排序:按CPU使用率降序排列

  • 内存排序 :按大写M键切换到内存使用率排序

  • 切回CPU排序 :按P键切回CPU排序

(2) 关键字段解析
  • PID:进程ID

  • %CPU:进程占用CPU百分比

  • %MEM:进程占用内存百分比

  • RES:进程占用的物理内存(单位:KB)

    • 示例:277MB ≈ 15%内存使用率(基于2GB总内存)
(3) 重要特性
  • 进程%CPU可能超过100%

    • 原因:统计的是进程占用所有CPU核心使用率之和

    • 上限:n核CPU上限为 n × 100%

    • 示例:16核CPU上,进程%CPU可达1600%

  • 与整体CPU使用率的区别

    • 整体CPU:所有核心的平均值(上限100%)

    • 进程CPU:占用各核心之和(上限为n×100%)

5. CPU问题排查流程

(1) 排查步骤
  1. 发现CPU使用率高:top命令看到整体CPU使用率高

  2. 定位问题进程

    • 查看进程列表(默认按CPU排序)

    • 找到占用CPU最高的进程

  3. 分析归属

    • 如果是压测程序 → 程序本身问题

    • 如果是其他程序 → 系统其他问题

  4. 深入分析 :按1查看各核心负载情况

(2) 实战案例
  • 挖矿病毒案例

    • 现象:CPU持续100%但无压测

    • 排查:top发现陌生高CPU进程

    • 确认:百度搜索进程名确认为挖矿程序

    • 解决:重装系统、修改密码

  • 教训:定期检查服务器异常进程

四、监控实战技巧

1. 产生测试负载

  • 目的:模拟真实场景观察监控数据变化

  • 方法

    • 使用JMeter等压测工具

    • 对Web应用接口施加压力

    • 观察监控数据动态变化

2. 监控时机

  • 压测期间:持续监控系统资源使用情况

  • 日常运维:定期检查异常进程

  • 问题排查:出现性能问题时第一时间监控

3. 监控数据解读

  • 动态变化:监控数据随负载变化而变化

  • 基准对比:建立系统正常状态下的基准值

  • 阈值报警:设定关键指标的报警阈值

相关推荐
驱动探索者11 小时前
AMD EPYC 服务器 CPU 学习
运维·服务器·学习·cpu
十五年专注C++开发4 天前
浅谈CPU中的SIMD
c++·cpu·代码优化·simd
AndrewHZ7 天前
【AI黑话日日新】什么是访存bound?
人工智能·语言模型·大模型·cpu·访存·计算逻辑
REDcker11 天前
Intel英特尔芯片架构演进史详解
架构·cpu·intel·英特尔·演进
Wpa.wk12 天前
性能测试-性能监控相关命令-基础篇
android·linux·运维·经验分享·测试工具·性能测试·性能监控
高新打工人14 天前
RISC-V(三):RV32M(RISC-V 32 位乘法 / 除法扩展指令集)
cpu·risc-v
lkbhua莱克瓦2420 天前
CPU三大核心部件功能详解
计算机·cpu·oc·ir·id
lkbhua莱克瓦2421 天前
CPU中核心参数的通俗介绍
计算机·cpu
lkbhua莱克瓦2421 天前
手机选购关注的参数-CPU篇
计算机·智能手机·cpu·oc·ir·id
HyperAI超神经21 天前
【TVM教程】TVM 运行时系统
人工智能·深度学习·学习·机器学习·cpu·gpu