本博文主要讲解Linux对硬件和软件资源的监控命令,包括:ios
vmstat
、top(相似msgtask)和简单的free;iostat -dx x y
;netstat
、网络IO流量概览的nload
和每一个套接字IO流量的iftop
vmstat
和其余服务器资源管理命令vmstat
是virtual memory status的缩写,即虚拟内存状态。能够用来监控CUP、虚拟内存、IO等多个服务器指标。数据库
vm有两个参数:vim
vmstat x y
一次采样vmstat
:windows
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 1502252 18464 261972 0 0 70 11 158 391 4 0 95 0 0
使用man vmstat
能够查看vmstat参数说明和打印详解:缓存
进程相关:服务器
内存相关:网络
页面调度相关swap(如下参数每秒不要超过10):并发
IO相关:ssh
系统相关:tcp
cup相关:五种操做对CPU时间的占比
以上重点参数已经加粗:
若是b一直不为0能够考虑是否存在死锁。
r表示使用和等待cup资源的进程个数,若是超过了cpu核数不少,就可能频繁的引发上下文切换,表现为cs很大。
若是si、so很大、free很小,可能主存性能知足不了如今工做,致使频繁的磁盘IO甚至抖动。
当上传文件并放入到本地磁盘时,bo忽然很大:
当使用vim将本地磁盘数据读入到内存中时,bi忽然变大:
1.procs ---------2.memory--------- ---3.swap-------4.io---- -5.system--------6.cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 1458020 22500 295004 0 0 1388 0 186 456 4 1 93 2 0
虽然没有换入换出si/so的例子,可是应当知道这是vmstat
最终要的参数,当这两个参数太大时应该考虑优化程序的实现和升级内存容量。
cup密集型服务器vmstat
的us
输出一般是一个很高的值,即cup花费在非内核代码上的cup时间占比应该很高。
cup密集型服务器上下文切换次数警告阈值是10万/s(具体状况看机器?)。
IO密集型服务器cup会花费大量时间等待IO请求完成,则意味着不少任务处于非中断休眠状态(b
列),而且wa
数字也很高(等待IO时间)。
top命令能够查看动态刷新的各个进程的cup和内存使用率,以及执行的命令和命令执行的用户和PID(进程ID),界面相似于windows的任务管理器:
free命令,界面以下:
root@iZwz94idfw2r7h2hnepjZ:~# free total used free shared buff/cache available Mem: 2048212 587876 981736 5264 478600 1301432 Swap: 0 0 0
iostat -dx a b
设备和分区的IO统计信息和cup统计信息。参数d x
分别表示显示设备使用状态和输出更多信息。a和b分别表示采样时间间隔和采样次数,同vmstat,第一次输出也是系统启动以来的平均值:iostat -dx
:爬虫程序启动后的变化值:
root@iZwz94iww8uynepjZ:~# iostat -dx 3 Linux 4.4.0-63-generic (iZwz94iww8uynepjZ) 05/04/2018 _x86_64_ (1 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 0.00 0.00 0.33 0.00 5.33 32.00 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 7.33 0.00 1.33 0.00 37.33 56.00 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 4.00 0.00 10.00 0.00 57.33 11.47 0.01 0.80 0.00 0.80 0.80 0.80 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 28.52 0.00 87.25 0.00 1268.46 29.08 0.18 2.08 0.00 2.08 1.66 14.50
r/s、w/s
:每秒钟发送到设备的读写请求;avgqu-sz
:在设备队列中等待的请求数量;await
:磁盘排队上花费的毫秒数,包括读和写;svctm
:服务请求花费的毫秒数,不包括排队时间。重要概念:请求服务并发数:
concurrency=(r/s+w/s)*(svctm/1000)
表示在采样周期内每秒设备处理的请求数。
netstat
链接详情Print network connections, routing tables, interface statistics, masquerade connections, and multicast membership
打印网络链接、路由表、接口统计、假装链接和多播membership。
root@iZwz94i8afw2r7g62hnepjZ:~# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:32000 *:* LISTEN tcp 0 0 *:http-alt *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 172.16.252.71:57346 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:57598 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:57306 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:39240 59.151.32.81:http TIME_WAIT tcp 0 0 172.16.252.71:39274 59.151.32.81:http TIME_WAIT tcp 0 0 172.16.252.71:39208 59.151.32.81:http TIME_WAIT tcp 0 0 172.16.252.71:57480 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:39372 59.151.32.81:http TIME_WAIT tcp 0 0 172.16.252.71:57450 211.151.27.128:http TIME_WAIT tcp 0 0 172.16.252.71:57482 211.151.27.128:http TIME_WAIT
nload
、iftop
nload
查看整体的输入输出流量,而且能够查看峰值、谷值和平均值,太简单,如图开启爬虫:
iftop
则能够查看每一个套接字的输出输出流量:
**以上提到的命令还能够用于数据库查询性能分析