【人在运维 途_02】20个Linux系统内置监视工具: vmstat和netstat
此文是人在 途之运维的第二篇、第一篇请参见:【人在运维 途_01】20个Linux系统内置监视工具:top
闲言少叙、看招哈O(∩_∩)O~
⑵ vmstat
写在前面的话、这里 Rocky 唠嗑一点、私下认为、vmstat 最佳实践也该是:
"到底哪个部分的资源被使用的最为频繁"
先瞧瞧 vmstat 的输出
[plain]
[root@Rocky ~]# vmstat 5 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1249892 29292 410624 0 0 143 25 101 206 2 2 94 2 0
1 0 0 1249628 29316 410624 0 0 0 60 95 210 2 3 94 1 0
1 0 0 1249644 29316 410624 0 0 0 0 93 189 0 0 100 0 0
① 项目【procs】显示与进程相关
r:等待运行的进程数量
b:被阻塞的进程数量
这 2 两列越多、代表系统越忙碌
② 项目【memory】显示与内存相关
swpd:已使用的 swap 的容量(KB)
free:可用的物理内存(KB)
buff:被文件元数据使用的容量(KB)
cache:被文件数据本身使用的容量(KB)
③ 项目【swap】显示与 swap 相关
si:数据从 SWAP 读取到 RAM(swap in)的大小(KB/秒)
so:数据从 RAM 写到 SWAP(swap out)的大小(KB/秒)
如果 si/so 比值太大、表示内存中的数据经常在磁盘和物理内存之间倒腾、系统性能很差
④ 项目【io】显示与 磁盘读写相关
bi:向磁盘发送数据的速率(块/秒)
bo:从磁盘读取数据的速率(块/秒)
如果这部分的值越高、代表系统的 I/O 非常忙碌
⑤ 项目【system】显示与系统活动相关
in:每秒被中断的进程数量
cs:在进程空间中进行上下文却换的速率
这两个数值越大、代表系统与周围设备(网卡、磁盘、时间钟等)通讯非常频繁
⑥ 项目【cpu】显示与 CPU 负载相关
us:消费在用户进程的 CPU 百分比、 Oracle 进程属于这一类
sy:消费在系统进程的 CPU 百分比
id:可用 CPU 百分比
wa:消费在"等待 I/O"上的百分比
st:消费在虚拟机上的 CPU 百分比
下面列举一些常见用法
Ⅰ 每秒一次、共计三次:vmstat 1 3
⑶ netstat
偶照样外甥打灯笼、先表明一下自个态度、netstat 的最佳实践应该是
"查看网络的连接状态"
先看一下netstat的输出:
[plain]
[root@localhost ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 3890/./hpiod
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4055/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3604/portmap
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 4379/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3908/sshd
tcp 0 0 0.0.0.0:854 0.0.0.0:* LISTEN 3640/rpc.statd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3021/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 4099/sendmail
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN 3895/python
tcp 0 0 :::5989 :::* LISTEN 4382/cimservermain
tcp 0 0 :::22 :::* LISTEN 3908/sshd
① Local Address:本地的 IP:PORT 情况
② Foreign Address:远程的 IP:PORT 情况
③ State:连接状态、主要有 【ESTABLISED】【LISTEN】
举个例子:
找出目前系统上已在监听的网络连接及其PID
[plain]
[root@localhost ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 3890/./hpiod
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4055/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3604/portmap
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 4379/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3908/sshd
tcp 0 0 0.0.0.0:854 0.0.0.0:* LISTEN 3640/rpc.statd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3021/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 4099/sendmail
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN 3895/python
tcp 0 0 :::5989 :::* LISTEN 4382/cimservermain
tcp 0 0 :::22 :::* LISTEN 3908/sshd
将上述的本地 192.168.122.1:53 那个网络服务关闭
[plain]
[root@localhost ~]# kill -9 4379
[root@localhost ~]# killall -9 dnsmasq