在性能测试时,会实时监控服务器进程资源占用情况,top命令是Linux系统自带的用于监控系统状况的工具
一、命令行输入top命令,返回下图中的信息,上部分是系统状态统计信息,下部分是进程信息
备注: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----进程的状态,它有以下不同的值:
%CPU----自从上一次更新时到现在进程所使用的CPU时间百分比;
%MEM----进程使用的可用物理内存百分比;
TIME+ ---- 进程已使用的CPU时间,单位为1/100秒,精确到百分之一秒;
COMMAND----运行进程所使用的命令,进程名称(命令名/命令行);
默认情况下会显示以上第七行常用的列名称,如果以上列并不满足自己的要求,可以按f(小写)键选择显示其它列,
按f(小写)键后进入下面的页面,图中红框中可以选择你所需的列
按 a-z(小写) 即可显示或隐藏对应的列,当选择需要显示的对应的列名称后,列名称前面会加有一个*号且从小写字母变成大写字母,选择结束后按回车键;
如果需要改变列的显示顺序,按o(小写)键,按 a-z (小写)可以将相应的列向右移动,按 A-Z (大写)可以将相应的列向左移动,结束后按回车键;
按 F(大写) 或 O (大写)键,然后按 a-z 可以将进程按照相应的列进行排序,如果按照进程已使用的时间来排序,那么按F(大写)键进入页面,然后按m(小写)键,最后按回车键
回到top命令行页面,可以看到已按照进程所使用的时间来排序了
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