线上CPU飙高问题排查!

https://v.douyin.com/iRTqH5ug/

linux top命令

top 命令是 Linux 下一个强大的实用程序,提供了系统资源使用情况的动态、实时概览。它显示了当前正在运行的进程信息,以及有关系统性能和资源利用情况的信息。

以下是 top 命令提供的关键信息的简要概述:

  1. 头部信息:

    • top - 这是显示一般系统信息的标题,包括当前时间、运行时间、用户数量、负载平均值和进程总数。
    • Tasks - 关于进程总数及其状态(运行中、睡眠中、停止等)的信息。
    • Cpu(s) - CPU 使用信息,包括 CPU 在用户进程、系统进程和空闲时间上花费的时间百分比。
    • Mem - 内存使用信息,包括总内存、已用内存、空闲内存和缓存内存。
  2. 进程表:

    • top 显示的主要部分是包含有关各个进程的信息的表格。它包括列,如:
      • PID - 进程 ID。
      • USER - 进程的所有者。
      • PR - 进程的优先级。
      • NI - 进程的 nice 值。
      • VIRT - 虚拟内存使用。
      • RES - 驻留内存使用。
      • SHR - 共享内存。
      • S - 进程状态(例如,运行中的 R,睡眠中的 S)。
      • %CPU - 进程使用的 CPU 百分比。
      • %MEM - 进程使用的 RAM 百分比。
      • TIME+ - 进程使用的总 CPU 时间。
  3. 交互式命令:

    • 在运行 top 时,您可以使用各种交互式命令来控制和自定义显示。一些常见命令包括:
      • q - 退出 top
      • k - 终止进程。
      • Spacebar - 更新显示。
      • 1 - 在显示单个 CPU 和摘要之间切换。
      • H - 切换线程视图。
      • u - 显示特定用户的进程。

要运行 top,只需在终端中键入 top,然后按 Enter 键。您可以按 q 键退出 top。这是一个用于监视系统性能并识别资源密集型进程的多功能工具。


ps H -eo pid,tid,%cpu | grep 11481 什么意思

这个命令使用了 ps 命令,结合了一些选项来显示进程(process)和线程(thread)的信息,特别是关于进程 ID(PID)、线程 ID(TID)和 CPU 使用率的信息。然后,通过 grep 命令过滤出包含 11481 的行。

具体来说,命令的含义如下:

  • ps H: 列出进程和线程信息,但不显示标题行。

  • -eo pid,tid,%cpu: 定义 ps 命令的输出格式,只显示 PID(进程ID)、TID(线程ID)和 %CPU(CPU使用率)这三列。

  • |: 将 ps 命令的输出通过管道传递给下一个命令。

  • grep 11481: 在 ps 输出中过滤包含字符串 11481 的行。

综合起来,这个命令的目的是找出 PID 或 TID 为 11481 的进程或线程,并显示它们的 CPU 使用率。请注意,PID 是进程 ID,而 TID 是线程 ID。


printf ‘0x%x\n’ 11562 什么意思

这命令使用 printf 命令将整数 11562 转换为十六进制表示法。具体来说:

  • printf: 这是一个格式化输出的命令,通常用于按照指定格式打印数据。

  • '0x%x\n': 这是 printf 命令的格式字符串。在这里,%x 是用于表示十六进制数字的格式指示符。0x 是十六进制的前缀。\n 是一个换行符,用于在输出中创建新的一行。

  • 11562: 这是要转换为十六进制表示法的整数。

因此,这个命令的目的是将整数 11562 转换为十六进制,并以 0x 为前缀的形式打印出来。实际的输出结果将是 0x2d9a


jstack 11481 | grep 0x2d2a -A 20

这个命令使用 jstack 工具生成 Java 进程的线程转储(thread dump),然后使用 grep 过滤包含字符串 0x2d2a 的行,并显示这一行及其后面的 20 行。

具体来说:

  • jstack 11481: 这个部分使用 jstack 工具来获取进程 ID 为 11481 的 Java 进程的线程转储。线程转储是一个显示 Java 程序中所有线程当前状态的快照。

  • |: 管道符,将 jstack 命令的输出传递给下一个命令。

  • grep 0x2d2a: grep 命令用于在文本中搜索包含指定字符串(在这里是 0x2d2a)的行。

  • -A 20: grep 命令的选项,表示要显示匹配行及其后续的 20 行。

综合起来,这个命令的目的是从 Java 进程的线程转储中找到包含字符串 0x2d2a 的行,并显示这一行及其后续的 20 行。这可能用于分析 Java 线程的堆栈信息,特别是与某个特定的内存地址(在这里是 0x2d2a)相关的线程信息。

线上CPU飙高问题排查!_第1张图片

你可能感兴趣的:(java,数据库,开发语言)