微服务问题定位——top

功能

显示当前系统正在执行的进程的相关信息,包括进程ID、 内存占用率 、CPU占用率等

option 使用参数

-b 进入批处理模式 相当于不停地执行top命令显示信息

-c 显示完整的command 位于信息的最后一列

-i <时间> 设置间隔时间 如-i 5设置5秒钟刷新一次top信息

-u <用户名> 显示指定用户的信息

-p <进程号> 显示指定进程的信息

-n <次数> 循环显示的次数

读者可以使用man top或者top -help查看完整的参数列表。

例图

top信息截图

说明

  • 第一行:

    13:40:29 — 当前系统时间
    10 day,2:32 — 机器从开机到目前为止运行的时长
    20 users — 登陆的用户有20个
    load average — 分别对应1mins,5mins,15mins的负载情况
    (根据一定的算法得到的值,load average/cpu数量>=5说明系统超负荷)

  • 第二行

    Tasks 系统进程数
    total — 当前系统进程269个
    running — 正在运行的1个
    sleeping — 睡眠的268个
    stopped — 停止的0个
    zombie — 僵尸进程0个

  • 第三行

    0.1% us — 用户空间占用CPU的百分比
    0.0% sy — 内核空间占用CPU的百分比
    0.0% ni — 改变过优先级的进程占用CPU的百分比
    99.9% id — 空闲CPU百分比
    0.0% wa — IO等待占用CPU的百分比
    0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
    0.0% si — 软中断(Software Interrupts)占用CPU的百分比

  • 第四行

    Mem 物理内存
    total — 物理内存总量 8GB
    free — 空闲的内存
    used — 正在使用的内存
    buff/cache — 缓存的内存
    (used表示现在系统内核控制的内存数,free表示还未进入内核控制的内存数,used还包括了停止使用但可能被重用的内存,所以used使用完的内存不会返还给free,所以free的内存数一定越来越少)

  • 第五行

    Swap 交换区
    total — 交换区总量
    used — 使用的交换区总量
    free — 空闲交换区总量
    cached — 缓冲的交换区总量
    (swap used经常变化的话说明内存已经不够使用了)
    (系统可使用的内存近似为第四行的free+buff/cache+第五行的cache)
    读者可以参考 参考链接了解

  • 进程状态监控各项指标

    PID — 进程id
    USER — 进程所有者
    PR — 进程优先级
    NI — nice值,负值表示高优先级,正值表示低优先级
    VIRT — 进程使用的虚拟内存总量,单位kb,VIRT=SWAP+RES
    RES — 进程使用的、未被换出的物理内存大小,单位kb,RES=CODE+DATA
    SHR — 共享内存大小,单位kb
    S — 进程状态,D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    %CPU — 上次更新到现在的CPU时间占用百分比
    %MEM — 进程使用的物理内存百分比
    TIME+ — 进程使用的CPU时间总计,单位1/100秒
    COMMAND — 进程名称(命令名/命令行)

top交互

执行top命令之后即进入top信息展示界面,可以使用命令行进行交互

  • top界面 按1显示多核cpu的使用情况
  • top界面默认按cpu的使用降序排序
    使用shift+>和shift+<来改变排序的指标
  • top界面 按x高亮排序的指标
  • top其他使用技巧
    h 显示帮助画面,给出一些简短的命令总结说明

    k 终止一个进程

    i 忽略闲置和僵死进程。这是一个开关式命令

    q 退出程序

    r 重新安排一个进程的优先级别

    S 切换到累计模式

    s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s

    f或者F 从当前显示中添加或者删除项目

    o或者O 改变显示项目的顺序

    l 切换显示平均负载和启动时间信息

    m 切换显示内存信息

    t 切换显示进程和CPU状态信息

    c 切换显示命令名称和完整命令行

    M 根据驻留内存大小进行排序

    P 根据CPU使用百分比大小进行排序

    T 根据时间/累计时间进行排序

    W 将当前设置写入~/.toprc文件中

说明

在top命令界面中,几乎不使用交互命令,在排查问题时,一般紧盯cpu使用高的线程即可。

显示 Gitment 评论