原文链接:https://newrss.guancha.cn/toutiao/toutiaopost/industry-science/2019_03_07_492721.shtml?tt_group_id=6665566522133447182
top命令
top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最"敏感"的任务列表,该命令可以按CPU使用、内存使用和执行时间对任务进行排序,而且该命令的很多特性都可以通过交互式命令。
Tasks、Cpus、Mem和Swap分别代表了进程信息、CPU信息和内存信息。各个列表示的指标意义如下 :
PID进程id
USER进程所有者用户名
PR 优先级
NI nice值
VIRT进程使用的虚拟内存总量
RES进程使用的未被换出的物理内存大小
SHR共享内存大小
S 进程状态S=睡眠T=跟踪R=运行Z=僵尸进程D=不可中断的睡眠进程
CPUcpu时间统计
MEM 物理内存占比
TIME+进程使用的CPU时间总计单位1/100秒
COMMAND命令行命令名
top常用的交互式命令使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明:
d:指定每两次屏幕信息刷新之间的时间间隔,当然用户可以使用s交互命令来改变之;
p:通过指定监控进程ID来仅仅监控某个进程的状态;
q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行;
S:指定累计模式;
s:使top命令在安全模式中运行,这将去除交互命令所带来的潜在危险;
i:使top不显示任何闲置或者僵死进程;
c:显示整个命令行而不只是显示命令名。
通过top命令,我们即可查到当前服务器的进程占用CPU和内存情况。
iostat命令
ostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
基本使用:
$iostat -d -k 2
参数说明:
-d:显示设备(磁盘)使用状态;
-k:某些使用block为单位的列强制使用Kilobytes为单位;
2:数据显示每隔2秒刷新一次。
参数解释如下:
tps:该设备每秒的传输次数,一次传输意思是“一次I/O请求”,多个逻辑请求可能会被合并为“一次I/O请求”;
kB_read/s:每秒从设备(drive expressed)读取的数据量;kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量,这些单位都为Kilobytes。
上面的例子中,我们可以看到磁盘sda以及它的各个分区的统计数据,当时瞬时统计的磁盘总TPS是1.88,下面是各个分区的TPS(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)
iostat -xdm
例如:iostat -xdm 2,2代表2秒钟刷新一次。
我们可以看到,%util这个参数即代表磁盘繁忙程度。100%表示磁盘繁忙, 0%表示磁盘空闲。但是我们需要注意,磁盘繁忙程度并不意味着磁盘读写速度大小。
iostat是系统级别的监控指令,iostat给我们的展示结果揭示了我们当前服务器磁盘的繁忙程度,虽然有一定的指导意义,但是不能精确到进程级别,这时候我们就需要iotop了。
iotop命令
我们上文讲到top命令,顾名思义,iotop代表io版本的top命令,使用起来简单粗暴,直接在命令行敲下:iotop。
iotop命令可以按进程统计IO状况,我们可以指导当前系统哪些进程在占用IO,百分比是多少,占用IO的进程是在读,还是在写,读写量是多少等信息。然后我们可以定位到具体的进程,查看进程详情。
同样个iotop命令有一个很像的命令叫做pidstat,参数很多。
例如:pidstat -d
:
我们同样可以看到每个进程的读写情况,然后定位到具体的线程去查看问题。