*stat系列命令(vmstat,iostat,ifstat,netstat,dstat)

dstat:系统资源统计,代替vmstat,iosat,ifstat,netstat命令。

Usage: #dstat [-afv] [options…] [delay [count]]
[options]:
-c:单独显示cpu相关信息;
-d:单独显示disk相关信息;
-m:单独显示memory相关统计数据;
-n:单独显示network相关统计数据;
-r:单独显示io请求相关的统计数据;
-s:显示swapped相关的统计数据。
-p:单独显示process相关统计数据;
-g:单独显示page相关统计数据;
例如:
#dstst //大致总体显示
在这里插入图片描述
#dstat -afv //详细显示
在这里插入图片描述
还会有后续…


vmstat:显示虚拟内存信息

作用:可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。
如:#vmstat
在这里插入图片描述
procs:

  • r:可运行(正运行或等待运行)进程的个数,和核心数有关(当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。)
  • b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)。

memory:

  • swpd:交换内存的使用总量(如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。)。
  • free:空闲物理内存总量。
  • buffer:用于buffer的内存总量(用来存储,目录里面有什么内容,权限等的缓存)。
  • cache:用于cache的内存总量(用来记忆我们打开的目录或文件,给文件做缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用)。

swap:

  • si:从磁盘交换进虚拟内存的数据速率kb/s(如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉)。
  • so:从虚拟内存交换至磁盘的数据速率kb/s(如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉)。

io:

  • bi: 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒。
  • bo:块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

system:

  • in:每秒CPU的中断次数,包括时间中断。
  • cs:进程切换速率,即每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。。

cpu:

  • us:time spent running non-kernel code,运行非内核代码所花费的时间,用户CPU时间。
  • sy:time spent running kernel code,运行内核代码所花费的时间,系统CPU时间。
  • id:time spent idle,空闲时间。
  • wa:time spent waiting for IO,等待输入输出所花费的时间。
  • st:time stolen from a virtual machine,从虚拟机窃取的时间
[root@centos7 profile.d]#vmstat -s  //显示内存统计信息
      1423964 K total memory
       158260 K used memory
        91904 K active memory
       144240 K inactive memory
      1004348 K free memory
         2308 K buffer memory
       259048 K swap cache
      2097148 K total swap
            0 K used swap
      2097148 K free swap
         2142 non-nice user cpu ticks
           15 nice user cpu ticks
         3347 system cpu ticks
       588566 idle cpu ticks
         1724 IO-wait cpu ticks
            0 IRQ cpu ticks
           67 softirq cpu ticks
            0 stolen cpu ticks
       252305 pages paged in
        21207 pages paged out
            0 pages swapped in
            0 pages swapped out
       374065 interrupts
       324950 CPU context switches
   1587110434 boot time
         1896 forks


iostat:统计cpu和IO信息

作用:iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
iostat数据的来源是Linux操作系统的/proc/diskstats

#iostat -d -x -k 1 10
命令参数解释:
-d 表示,显示设备(磁盘)使用状态;
-k 显示的磁盘读写速度为KB;
-m:显示的磁盘读写速度为MB;
-x,该选项将用于显示和io相关的扩展数据。
1 表示,数据显示每隔2秒刷新一次。
10 表示一共刷新10次;

如图:
在这里插入图片描述
cpu属性值说明:

  • %user:CPU处在用户模式下的时间百分比。
  • %nice:CPU处在带NICE值的用户模式下的时间百分比。
  • %system:CPU处在系统模式下的时间百分比。
  • %iowait:CPU等待输入输出完成时间的百分比。
    • 如果%iowait的值过高,表示硬盘存在I/O瓶颈
  • %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
  • %idle:CPU空闲时间百分比。
    • 如果%idle值高,表示CPU较空闲
    • 如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。
    • 如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。
      [Device]属性值说明:
  • tps:该设备每秒的传输次数
  • kB_read/s:每秒从设备(drive expressed)读取的数据量;
  • kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
  • kB_read: 读取的总数据量;
  • kB_wrtn:写入的总数量数据量;

如图:
查看设备使用率(%util)、响应时间(await)
【-d 显示磁盘使用情况,-x 显示详细信息】
在这里插入图片描述显示说明:

  • rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);
  • wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
  • rsec/s:每秒读取的扇区数;(每秒读操作的次数)
  • wsec/:每秒写入的扇区数。 (每秒写操作的次数)
  • rKB/s = kB_read/s:每秒从设备(drive expressed)读取的数据量,KB单位;
  • wKB/s = kB_wrtn/s:每秒向设备(drive expressed)写入的数据量,KB单位;
  • avgrq-sz :每个IO的平均扇区数,即所有请求的平均大小,以扇区(512字节)为单位;
  • avgqu-sz :平均为完成的IO请求数量,即平均意义上的请求队列长度毫无疑问,队列长度越短越好。
  • await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
  • svctm:表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
  • %util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 =80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了。(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

ifstat:阅读网络接口统计数据的便捷工具

作用:阅读网络接口统计数据的便捷工具
ifstat整洁地打印出网络接口统计数据。该实用程序保留历史文件中显示的以前数据的记录,并且默认情况下只显示上次和当前通话。历史文件的位置默认为"/tmp/.ifstat.u$UID",但可能会被IFSTAT_HISTORY环境变量覆盖。同样,默认 xstat(extend stats)的位置是/tmp/。< xstat name> _ifstat.u$UID。

Usage: #ifstat [OPTION] [ PATTERN [ PATTERN ] ]
在这里插入图片描述
此命令不常用

netstat:查看网络连接情况

netstat 查看网络连接情况
#netstat [options]
[options]:
-a:显示所有正在连接的sockets
-l(小写L):显示/监听服务器的sockets
-i/-I:显示网卡通讯信息
-t:显示tcp协议
-u:显示udp协议
-p:显示进程名称及PID
-e:显示用户的ID和inode节点号
-r:显示路由表信息(#netstat -r = #route -n)
-n:不解析名称(如hosts,prot,user)
例:查看使用tcp协议且正处于连接状态的进程
#netstat -ntlp
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值