当前位置: 首页 > news >正文

Linux常用性能监测工具参数说明

文章目录

  • top详解
    • 1️⃣ 第一行:系统整体信息
    • 2️⃣ 第二行:任务信息 (进程状态)
    • 3️⃣ 第三行:CPU 使用率
    • 4️⃣ 第四、五行:内存与 SWAP
      • buffer 与 cache 区别
    • 5️⃣ 进程列表详解
    • 6️⃣ 实用技巧
  • jstack堆栈信息
    • 1. 线程基本信息解读
    • 2. 线程状态说明
    • 3. 堆栈跟踪分析
    • 4. 为什么重点关注 `nid`

top详解

在这里插入图片描述

1️⃣ 第一行:系统整体信息

top - 21:08:03 up 0 min,  1 user,  load average: 1.79, 0.41, 0.13
  • 系统时间21:08:03 → 当前时间
  • 运行时间 (uptime)up 0 min → 系统运行了 0 分钟
  • 登录用户数1 user → 当前登录系统的用户数量
  • 负载平均值 (load average)1.79, 0.41, 0.13
    • 分别表示 1分钟、5分钟、15分钟 的平均负载
    • Load > CPU核心数 → CPU 可能出现瓶颈
    • top 下按 1 可以查看每个 CPU 的使用情况

💡 Tip:Linux负载不是百分比,是排队的进程数,值越大表示系统压力越大。


2️⃣ 第二行:任务信息 (进程状态)

Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0 zombie
  • total:总进程数 = 29
  • running:运行中进程 = 1
  • sleeping:睡眠状态 = 28(大多数进程通常处于睡眠状态)
  • stopped:停止状态 = 0
  • zombie:僵尸进程 = 0

⚠️ 重点关注 僵尸进程,如果长期存在僵尸进程,说明父进程未处理子进程退出。


3️⃣ 第三行:CPU 使用率

%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

各字段说明:

缩写含义正常参考
us用户态 CPU 占比0~70% 视负载
sy内核态 CPU 占比0~20%
ninice 值改变优先级进程占比通常很小
id空闲 CPU越高说明 CPU 空闲越多
waI/O 等待高说明磁盘或网络瓶颈
hi硬中断占比高说明硬件问题
si软中断占比高频率说明内核任务处理重
ststeal time虚拟机被抢占 CPU 时间片占比

小技巧:us + sy + ni ≈ CPU 实际使用率,id ≈ 空闲率


4️⃣ 第四、五行:内存与 SWAP

MiB Mem :   7836.1 total,   7297.3 free,    563.2 used,    203.1 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   7272.9 avail Mem
  • 总内存7836.1 MiB
  • 空闲内存7297.3 MiB
  • 已用内存563.2 MiB
  • 缓冲 + 缓存203.1 MiB
  • 可用内存 = free + buffers + cached = 约 7.5 GiB
  • SWAP:用于内存不足时硬盘扩展
    • 如果 used 高 → 内存紧张
    • SWAP 高 → 系统性能可能下降

buffer 与 cache 区别

  • buffer:主要用于内核数据结构缓冲,如 I/O 数据块
  • cache:主要用于文件缓存,加快数据访问速度
  • 总结:Linux 会尽量用空闲内存做 cache,不代表内存不足

5️⃣ 进程列表详解

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
188 polkitd   20   0  306708   9084   6440 S   0.3   0.1   0:00.20 polkitd

字段说明:

字段含义
PID进程 ID
USER所属用户
PR优先级
NInice 值
VIRT虚拟内存 = 进程可用内存总量(含 swap + 映射文件)
RES驻留内存 = 实际占用物理内存
SHR共享内存
S进程状态:R=运行,S=睡眠,Z=僵尸,T=停止
%CPUCPU 占用率
%MEM内存占用率
TIME+CPU 累计使用时间
COMMAND进程名称

⚠️ RES - SHR ≈ 进程实际占用的物理内存


6️⃣ 实用技巧

  1. 监控 CPU 核心负载top → 按 1
  2. 排序
    • %CPU 排序 → P
    • %MEM 排序 → M
  3. 查看特定进程top -p PID
  4. 终止进程:在 top 中按 k → 输入 PID

jstack堆栈信息

在这里插入图片描述

1. 线程基本信息解读

"pool-1-thread-1" #10 prio=5 os_prio=0 tid=0x00007f09e0166000 nid=0x7316 runnable [0x00007f09cc9cb000]java.lang.Thread.State: RUNNABLEat com.tuling.learnjuc.demo.JVMCPU$CPUTask.run(JVMCPU.java:16)- locked <0x0000000757d645b8> (a java.lang.Object)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:750)Locked ownable synchronizers:- <0x0000000757d65d00> (a java.util.concurrent.ThreadPoolExecutor$Worker)
字段含义
"pool-1-thread-1"线程名称,方便识别线程来源,例如线程池创建的线程
#10JVM 给线程分配的序号,从 #1 开始按创建顺序编号
prio=5Java 线程优先级(1-10,默认5)
os_prio=0操作系统线程优先级(与 Java 优先级可能不完全一致)
tid=0x00007f09e0166000JVM 内部线程 ID(16 进制表示)
nid=0x7316操作系统线程 ID(Native Thread ID,十六进制)
runnable线程状态(RUNNABLE、BLOCKED 等)
[0x00007f09cc9cb000]线程的本地栈地址

注意nid 最常用来在操作系统层面定位线程,例如用 top -H -p <pid> 查看 CPU 占用。


2. 线程状态说明

  • NEW:线程刚创建,还没启动。
  • RUNNABLE:线程可运行或正在 CPU 上运行。
  • BLOCKED:线程在等待某个锁。
  • WAITING:无限期等待另一个线程动作(Object.wait() / LockSupport.park() 等)。
  • TIMED_WAITING:有超时限制的等待(Thread.sleep() / join(long) / Lock.tryLock(timeout))。
  • TERMINATED:线程已结束。

在这里插入图片描述

重点关注RUNNABLEBLOCKED,尤其是高 CPU 或死锁分析时。


3. 堆栈跟踪分析

at com.tuling.learnjuc.demo.JVMCPU$CPUTask.run(JVMCPU.java:16)
- locked <0x0000000757d645b8> (a java.lang.Object)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
  • at com.tuling.learnjuc.demo.JVMCPU$CPUTask.run(JVMCPU.java:16)
    当前线程正在执行的 Java 方法,定位问题代码行。
  • - locked <0x0000000757d645b8>
    当前线程持有的锁对象地址,可用于分析死锁或竞争。
  • Locked ownable synchronizers
    线程持有的可拥有锁(例如 ReentrantLock),在死锁排查中很有用。

4. 为什么重点关注 nid

  • nid 是操作系统层的线程 ID,可以用来和系统工具对应:

    # 查看线程 CPU 使用情况
    top -H -p <pid>
    

    然后找到对应的 nid(十六进制需转为十进制)。

  • 高 CPU、死锁、线程卡顿排查时,nid + 堆栈信息是最直接证据。


http://www.dtcms.com/a/432795.html

相关文章:

  • 江苏企业网站建设价格郑州男科医院排名哪家医院好
  • 高校 网站建设实施方案网站标签的作用
  • 个人网站首页内容北京品牌设计公司排名前十强
  • CodeBuddy code + MCP:一句话智能开发宠物卡片应用
  • 互联网官方网站制作网站的免费软件
  • 建立网站预算应用中心安装
  • 手机建站教程电脑可以做网站主机么
  • 中国建设信用卡网站个人型网站开站费用
  • 做网站 计算机有交嘛北京网络营销的培训课程
  • wordpress工作发布时间网站改版对seo的影响
  • 《jQuery 实例》
  • 成都响应网站建设wordpress 4.3.1
  • 贺兰县住房城乡建设局网站wordpress 页面 小工具
  • 如何架设内部网站网站用html做的怎么弄后台
  • 网站开发费用清单wordpress 自建模版
  • 建站公司接单wordpress 用户列表
  • 网站做301排名会掉pc网站怎么做适配
  • 网站制作报价图片欣赏企业网站搭建及优化
  • 微网站建设包括哪些方面商务网站建设中的必备功能
  • 织梦怎么更新网站html做网站注册商标哪一类
  • 湖北省住房与城乡建设厅网站网站关键词引流
  • 服装企业网站建设的目的专业网站建设哪里好
  • 海报设计 网站人力资源公司起名大全
  • 周到的网站建站wordpress分类底部上移
  • 制作微信网站模板下载不了深圳龙华汽车网站建设
  • 怎么做谷歌收录的网站网站建设洽谈方案
  • 替别人做网站沧州企业做网站
  • 做谷歌外贸较好网站建一个信息 类网站
  • DNL与INL
  • 乐清建站如何优化网络