性能监控top命令

在性能测试时,会实时监控服务器进程资源占用情况,top命令是Linux系统自带的用于监控系统状况的工具

一、命令行输入top命令,返回下图中的信息,上部分是系统状态统计信息,下部分是进程信息

性能监控top命令_第1张图片

备注:top命令默认每间隔3秒刷新显示,要手动刷新,可以输入回车或者空格键,也可以用(top d 秒数 )命令来设置刷新显示时间

各行代表的含义:

1、第一行:系统运行时间和平均负载

当前系统时间为01:29:02;

up 4 day ,8:53 ----系统已运行时间为4天8时53分,格式:天,时:分;

登陆4个用户数;

load average----系统负载,三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值,如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了;

 

2、第二行:任务(或进程)

共运行135个进程,1个运行中进程,134个进程休眠,停止状态的进程是0个,僵死状态的进程也是0个;

running----运行

sleep----休眠

stoped----停止

zombie----僵尸

3、第三行:cpu状态

%us(user)----用户空间占用cpu的百分比(user:cpu运行未调整的优先级用户进程的时间 )

%sy(system)----内核空间占用cpu的百分比

%ni(nice)----改过的优先级的进程占用cpu的百分比(nice:cpu运行已调整优先级的用户进程的时间)

%id(idle)----空闲cpu百分比

%wa(IO wait)----等待IO占用cpu的百分比

%hi----硬中断占用cpu的百分比

%si----软中断占用cpu的百分比

%st(steal)----管理程序(hypervisor)为另一个虚拟进程提供服务而等街待虚拟cpu百分比

4、第四行:内存状态

total----物理内存总量
used----已使用的物理内存总量
free----空闲内存总量
buffers----缓存的内存量

5、第五行:交换分区状态

total----交换分区总量
used----已使用的交换区总量
free----空闲交换区总量
cached----缓冲的交换区总量

备注:可用内存计算公式 = buffers + free + cached

6、第七行:各进程的状态监控

PID----进程ID,进程的唯一标识符;

USER----进程所有者的实际用户名;

PR----进程的调度优先级,这个字段的一些值是"rt",表示这些进程正在运行,PR(new)=PR(old)+nice,PR(new)值越小,优先级就越高,越早被执行;

NI----进程nice值,进程可被执行的优先级的修改正值,越小的值意味着越高的优先级,负值表示高优先级,正值表示低优先级

VIRT(virtual  memory  usage)----进程使用的虚拟内存,进程使用的虚拟内存总量,单位kb,虚拟内存是按照申请量来计算的,而不是按照实际使用量来计算的,VIRT=SWAP+RES;

RES(resident  memory usage)----常驻内存,单位kb,RES=CODE+DATA;

SHR(shared  memory)----共享内存,单位kb;

S----进程的状态,它有以下不同的值:

  • D(interruptible  sleep)----不可中断的睡眠
  • R(running) ----运行中
  • S(sleeping) ----睡眠
  • T(traced or stopped) ----被跟踪或已停止
  • Z(zombie) ----僵尸

%CPU----自从上一次更新时到现在进程所使用的CPU时间百分比;

%MEM----进程使用的可用物理内存百分比;

TIME+ ---- 进程已使用的CPU时间,单位为1/100秒,精确到百分之一秒;

COMMAND----运行进程所使用的命令,进程名称(命令名/命令行);

 

默认情况下会显示以上第七行常用的列名称,如果以上列并不满足自己的要求,可以按f(小写)键选择显示其它列

按f(小写)键后进入下面的页面,图中红框中可以选择你所需的列

性能监控top命令_第2张图片

 按 a-z(小写) 即可显示或隐藏对应的列,当选择需要显示的对应的列名称后,列名称前面会加有一个*号且从小写字母变成大写字母,选择结束后按回车键;

如果需要改变列的显示顺序,按o(小写)键,按 a-z (小写)可以将相应的列向右移动,按 A-Z (大写)可以将相应的列向左移动,结束后按回车键;

按 F(大写) 或 O (大写)键,然后按 a-z 可以将进程按照相应的列进行排序,如果按照进程已使用的时间来排序,那么按F(大写)键进入页面,然后按m(小写)键,最后按回车键

性能监控top命令_第3张图片

回到top命令行页面,可以看到已按照进程所使用的时间来排序了

性能监控top命令_第4张图片

R(大写) 键可以将当前的排序倒转;

其它备选的列:

PPID----父进程ID

RUSER---- 真正的用户名

UID---- 进程所有者的用户id

GROUP----进程所有者的组名

TTY----启动进程的终端名,不是从终端启动的进程则显示为 ?

P----最后使用的CPU,仅在多CPU环境下有意义

SWAP----进程使用的虚拟内存中被换出的大小,单位kb

TIME----进程使用的CPU时间总计,单位秒

CODE----可执行代码占用的物理内存大小,单位kb

DATA----可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

NFLT----页面错误次数

NDRT----最后一次写入到现在,被修改过的页面数

WCHAN----若该进程在睡眠,则显示睡眠中的系统函数名

FLags----任务标志

 

二、top常用的选项

格式:top  [选项]

b:批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

d:指定每两次屏幕信息刷新之间的时间间隔,当然用户可以使用s交互命令来改变之;

p:通过指定监控进程ID来仅仅监控某个进程的状态;

q:该选项将使top没有任何延迟的进行刷新,如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行;

S:指定累计模式;

s:使top命令在安全模式中运行,这将去除交互命令所带来的潜在危险;

i:使top不显示任何闲置或者僵死进程;

c:显示整个命令行而不只是显示命令名;

 

三、服务器监控中常用命令

1、显示所有进程

top  -ab  -n 1

2、只显示某一个进程名的所有进程信息

top  -ab  -n  1 | grep  进程名

3、监控java线程数

ps -eLf | grep java | wc -l

4、监控网络客户连接数

netstat -n | grep tcp | grep 侦听端口 | wc -l

5、进程中线程数量

ls    /proc/PID/task  |  wc -l

PID---进程ID

你可能感兴趣的:(Linux)