1 linux磁盘监控工具
1.1. iostat
查看存储设备输入和输出状态统计的工具,用来追踪存储设备的性能 问题;包括设备,磁盘,NFS远程磁盘。
1 | yum install sysstat |
1 | %user: 在用户级别运行所使用的CPU百分比 |
系统systat包里的工具,以kB/s为单位统计,2表示以2秒为频率统计一次:
iostat –x –k 2 10000
说明rrqm/s
:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s
:每秒这个设备相关的写入请求有多少被Merge了。rsec/s
:每秒读取的扇区数;wsec/s
:每秒写入的扇区数。rKB/s
:每秒向设备发出的读取请求数;wKB/s
:每秒向设备发出的写入请求数;avgrq-sz
: 平均请求扇区的大小avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。await
:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。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%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
1.2 iotop
1 | yum install iotop |
监控linux磁盘I/O, 用于查找大量使用磁盘读写进程的时候。python版本需要2.7以上。
-h: 查看帮助
用法:iotop -d 1 -o-o
:只显示有io操作的进程-b
:批量显示,无交互,主要用作记录到文件。-n
NUM:显示NUM次,主要用于非交互式模式。-d
SEC:间隔SEC秒显示一次。-p
PID:监控的进程pid。-u
USER:监控的进程用户。
常用快捷键
左右箭头
:改变排序方式,默认是按IO排序。r
:改变排序顺序。o
:只显示有IO输出的进程。p
:进程/线程的显示方式的切换。a
:显示累积使用量。q
:退出。
1.3 sar - 性能监控和瓶颈检查
1 | yum install sysstat |
sar –p –d 2 1000
说明:tps
: 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。rtps
: 每秒向磁盘设备的读请求次数wtps
: 每秒向磁盘设备的写请求次数bread
: 每秒从磁盘读的bytes数量bwrtn
: 每秒向磁盘写的bytes数量
或者用:sar –b 2 1000
1.4 dstat - 多类型资源统计工具
1 | yum install dstat |
dstat
命令是一个用来替换vmstat
、iostat
、netstat
、nfsstat
和ifstat
这些命令的工具,是一个全能系统信息统计工具。与sysstat
相比,dstat
拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat
支持即时刷新,譬如输入dstat 3
即每三秒收集一次,但最新的数据都会每秒刷新显示。和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat -c
即显示CPU的使用情况。
常用选项-c
:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。.-C
:当有多个CPU时候,此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息。-d
:显示磁盘读写数据大小。-D
hda,total:包括hda和总数。-n
:显示网络状态。-N
eth1,total:有多块网卡时,指定要显示的网卡。-l
:显示系统负载情况。-m
:显示内存使用情况。-g
:显示页面使用情况。-p
:显示进程状态。-s
:显示交换分区使用情况。-S
:类似D/N。-r
:I/O请求情况。-y
:系统状态。--ipc
:显示ipc消息队列,信号等信息。--socket
:用来显示tcp udp端口状态。-a
:此为默认选项,等同于-cdngy。-v
:等同于 -pmgdsc -D total。--output
文件:此选项也比较有用,可以把状态信息以csv的格式重定向到指定的文件中,以便日后查看。例:dstat –output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到/root/dstat.csv文件中。
2 Linux进程监控工具
2.1 top - 经典的Linux任务管理工具
显示所有正在运行而且处于活动状态的实时进程, 而且会定期更新显示结果;它显示了CPU使用率,内存使用率,交换内存使用大小,调整缓存使用大小,缓冲区使用大小,进程PID, 使用的命令等信息。
2.2 Htop - 更加友好的top
1 | yum install htop |
使用详解
一个非常高级的交互式实时linux进程监控工具,和top相似,但更友好, 还支持鼠标。
sudo apt-get install htop
3 Linux网络监控工具
3.1 tcpdump - 洞察网络封包
1 | apt-get install tcpdump |
用于捕捉或过滤网络上指定接口上接收或者传输的TCP/IP包。
-i
:网络接口
-c
: 需要输出包数量
3.2 netstat - 显示开放的端口和连接
使用详情
用于监控进出网络的包和网络接口统计的命令行工具,非常有用,用来监控网络性能,解决网络相关问题。
-h
: 查看帮助
-r
: 显示路由表
-i
: 查看网络接口
3.3 iptraf - 网络性能工具
用于采集通过网络接口的IP流量信息,包括tcp标记,icmp信息,TCP,UDP信等。
1 | $ sudo apt-get install iptraf |
3.4 nethogs - 监视每个进程的网络带宽
监控每个进程使用的网络带宽
1 | $ sudo apt-get install nethogs |
3.5 iftop - 类似top的网络带宽监控工具
监控网络接口的应用网络带宽使用情况
1 | $ sudo apt-get install iftop |
=>
: 表示 流量方向
TX
: 发送的流量
RX
: 接收的流量
TOTAL
: 总流量
Cumm
: 运行iftop到目前总流量
peak
: 流量峰会
rates
: 分别表示 过去2秒,10秒,40秒的平均流量
4 Linux资源监控工具
4.1 vmstat - 虚拟内存统计信息
系统默认安装工具
一般是通过两个数字参数来完成的,第一个参数是采样时间间隔,单位是秒, 第二个参数是采样的次数
r
: 表示运行队列,如果队列过大说明CPU很繁忙,一般会造成CPU使用率高
b
: 表示阻塞的进程数
swap
: 虚拟内存已使用的大小,如果大于0,说明机器的物理内存不够了
free
: 空闲的物理内存大小
buff
: 系统占用的缓存大小(写缓存)
cache
: 直接用来记忆我们打开的文件,给文件做缓冲,读缓存
si
: 每秒从磁盘读入虚拟内存大小,如果这个值大于0,表示物理内存不足了
so
: 每秒虚拟内存写入磁盘的大小,如果这个值大于0, 表示物理内存不足了
us
: 用户cpu时间
sy
: 系统CPU时间, 如果值 太高,说明系统调用,例如是IO操作频繁
id
: 空闲CPU时间,一般来说 id + us + sy = 100
wt
: 等待IO的CPU时间
1.3. lsof - 列表显示打开的文件
列出打开的文件;它常用于以列表形式显示所有打开的文件和进程,包括磁盘文件,网络套接字,管道,设备和进程。
主要情形之一就是 无法挂载磁盘和显示正在使用或者打开某个文件的错误时,查看谁正在使用。
1.12. system monitor
监控cpu,内存,进程,硬盘的信息;分为进程监控,资源监控,文件监控; 遗憾的是需要图形界面支持。
1 | sudo apt-get install gnome-system-monitor |
2、nmtui配置网卡
使用nmtui命令(上一篇博客里有介绍界面)
参考资料
https://10.linuxstory.net/command-line-tools-to-monitor-linux-performance/
http://os.51cto.com/art/201412/460698_all.htm
https://zhuanlan.zhihu.com/p/34518047
https://segmentfault.com/a/1190000016435032