linux下查看硬件资源和网络资源的使用情况

本博文主要讲解Linux对硬件和软件资源的监控命令,包括:

  1. 查看cpu、内存、上下文、vm状态的vmstat、top(类似msgtask)和简单的free;
  2. 查看网络连接的netstat、网络IO流量概览的nload和每个套接字IO流量的iftop;
1. vmstat和其他服务器资源管理命令

vmstat是virtual memory status的缩写,即虚拟内存状态。可以用来监控CUP、虚拟内存、IO等多个服务器指标。

1.1 基本使用方式

vm有两个参数:

vmstat x y
  • x、y为两个整数,前者表示采样的时间间隔数,后者表示采样次数——省略一个参数表示一直采样直至手动停止,省略两个参数表示现在进行一次采样。
1.2 参数解释

一次采样vmstat:

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参数说明和打印详解:

进程相关

  1. r:可运行的进程数目,包括running、或者等待时间片的进程;
  2. b:处于阻塞状态(in uninterruptible sleep)的进程数;

内存相关

  1. swpd:使用的虚拟内存容量,单位字节;
  2. free:空闲的内存容量;
  3. buff:作为缓冲buffers的内存容量;
  4. cache:作为缓存cache的内存容量;
  5. inact/active(-a):活跃和不活跃的内存容量;

页面调度相关swap

  1. si(swap in):每秒内存从磁盘写入的容量;
  2. so(swap out):每秒内存写出到磁盘的容量;

IO相关:

  1. bi(block in):每秒从块设备(磁盘和其他)获取的块数;
  2. bo:每秒从块设备获取的块数。
  3. 主存和磁盘以块为单位传送数据。

系统相关

  1. in:The number of interrupts per second, including the clock;
  2. cs(context swiches):每秒钟上下文切换的次数,cs次数太多是需要考虑调整程序线程数量

cup相关:五种操作对CPU时间的占比

  1. us(user time):cpu运行非内核代码的时间;
  2. sy(system time):cpu运行内核代码的时间;
  3. id(idle time):空闲时间,包括IO等待时间;
  4. wa:等待IO的时间;
  5. st:time stolen from a virtual machine.位置消耗时间。
1.3 分析思路(注意事项、未实战,纯猜想:

以上重点参数已经加粗:

如果b一直不为0可以考虑是否存在死锁。

r表示使用和等待cup资源的进程个数,如果超过了cpu核数很多,就可能频繁的引起上下文切换,表现为cs很大。

如果si、so很大、free很小,可能主存性能满足不了现在工作,导致频繁的磁盘IO甚至抖动。

1.4 实例解析
  • 当上传文件并放入到本地磁盘时,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

- 当开启爬虫程序,需要从网络读取数据,并写入磁盘数据库时,各参数变化如下:
![](https://wx2.sinaimg.cn/mw1024/006Xp67Kly1fqybkvqx4dj30c60dzq3u.jpg)
    1. 从网络设备读取数据时bi变大;
    2. 当写入数据到数据库时bo变大;
    3. 开启了十几个线程因此需要频繁的上下文切换;
    4. 用户程序使用cup时间us经常在90%以;
    5. 等待IO时间占比wa也变得不稳定。

**虽然没有换入换出si/so的例子,但是应当知道这是`vmstat`最终要的参数,当这两个参数太大时应该考虑优化程序的实现和升级内存容量。**

##### 2. 其他

top命令可以查看动态刷新的各个进程的cup和内存使用率,以及**执行的命令和命令执行的用户和PID(进程ID)**,界面类似于windows的任务管理器:
![](https://wx3.sinaimg.cn/mw1024/006Xp67Kly1fqyc5zzn8qj30or088wfe.jpg)

free命令,界面如下:

root@iZwz94idfw2r7h2hnepjZ:~# free
total used free shared buff/cache available
Mem: 2048212 587876 981736 5264 478600 1301432
Swap: 0 0 0



##### 2. 网络资源
###### 2.1 `netstat`连接详情
>Print network connections, routing tables, interface statistics, masquerade connections, and multicast membership

打印网络连接、路由表、接口统计、伪装连接和多播membership。
- a、t、u表示罗列出所有的tcp和udp连接:

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

```

2.2 输入输出流量:nloadiftop

nload查看总体的输入输出流量,并且可以查看峰值、谷值和平均值,太简单,如图开启爬虫:

iftop则可以查看每个套接字的输出输出流量:

猜你喜欢

转载自www.cnblogs.com/dugk/p/8987028.html