有关于网络问题,又是笔者另一个薄弱知识点。
应该说是理论知识不够扎实,每次理论学的差不多的时候,由于缺乏实战,一段时间之后,又忘记的差不多了。
每次重复这种情况还是蛮尴尬的,所以理论结合实战才是学习网络知识的最佳途径。
本文主要介绍如何通过命令来了解当前机器的网络配置,而对于网络方面的监控,究竟有哪些指标可供使用。
1.机器网络配置所谓网络配置,实际最简单的就是当前机器的IP地址,当然还有别的重要信息。
我们通过ifconfig命令可以了解到
root@93de58bae514:/# ifconfig
eth0: flags=4163 mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 1317563 bytes 72471955 (72.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1649969 bytes 89099310 (89.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
物理网卡eth0 MTU=1500
当前机器ip地址为 172.17.0.2 MAC地址为02:42:ac:11:00:02
RX(Receiver接收包) 上述示例中:接收总包数1317563,接收总bytes为72.4 MB,发生错误的包、丢包数量为0
TX(Transmit发送包) 上述示例中:发送总包数1649969,发送总bytes为89.0 MB,发送错误的包、丢包数量为0
errors 发生错误的数据包数,如校验错误、帧同步错误等;
dropped 丢弃的包数量,数据包已经收到了Ring Buffer,但由于内存不足等原因丢包;
overruns 超限数据包,即网络I/O速度过快,导致Ring Buffer中的数据包来不及处理而导致的丢包;
carrier 表示carrier错误的数据包数,比如双工模式不匹配,物理电缆出线问题等;
collisions 碰撞数据包数
2.查看套接字信息
ifconfig从全局角度展示了当前机器(网络)的基本信息。
但是当我们分析某个套接字、网络栈等信息时,还是需要使用netstat命令来展示
root@91230cc467cc:/usr/local/tomcat# netstat -nlp
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:8005 0.0.0.0:* LISTEN 1/qemu-x86_64
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 1/qemu-x86_64
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1/qemu-x86_64
Active UNIX domain sockets (only servers)
展示目前在监听的端口信息
套接字状态Recv-QSend-QEstablished接收队列长度(套接字缓冲还没有被应用程序取走的字节数)发送队列长度(还没有被远端主机确认的字节数)Listeningsyn backlog(半连接队列长度)当前值syn backlog(半连接队列长度)最大值 3.性能指标这里算是比较重要的了,一般来排查问题时,都是观察各种性能指标是否异常来推断具体问题点。
3.1 带宽在计算机网络中,带宽用来表示网络通信线路传输数据的最大能力。
我们计算机常用的网卡 100M、1000M就是带宽的意思(这里的单位为Mb 即比特/秒,如果要换算成byte,还需要除以8)
3.2 吞吐量类似于磁盘I/O吞吐量,表示单位时间内通过某个网络或接口的数据量,包括上传和下载的数据量。
吞吐量受限与带宽。
吞吐量/带宽=网络使用率。
3.3 时延表示从网络请求发出后,一直到接收到响应,所需时间。
时延是一个很重要的性能指标,总时延=发送时延+传播时延+排队时间+处理时延。
具体这些数据的含义可以参考: 计算机网络的性能指标 - 明王不动心 - 博客园 (图画的很漂亮)
3.4 PPSPacket Per Second的缩写,即每秒发送包数量
PPS通常用来评估网络的转发能力
4.网络性能指标监控既然上述有哪些多性能指标,哪些命令可以监控呢?
4.1 sar命令root@e05fc0c9b15c:/# sar -n DEV 3
Linux 5.10.76-linuxkit (e05fc0c9b15c) 03/18/22 _aarch64_ (4 CPU)
15:01:21 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
15:01:24 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
15:01:24 tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
15:01:24 ip6tnl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
15:01:24 eth0 3767.67 2209.00 250.45 149.82 0.00 0.00 0.00 0.02
rxpck/s 和 txpck/s分别表示接收和发送的PPS(加在一起就是总PPS)
rxkB/s 和 txkB/s分别表示接收和发送的吞吐量(加在一起就是总吞吐量)
%ifutil表示网络接口使用率
4.2 带宽查看查看某个网卡的带宽,可以直接通过ethtool命令查看
root@93de58bae514:/# ethtool eth0 | grep Speed
Cannot get wake-on-lan settings: Operation not permitted
Speed: 10000Mb/s
这里的Mb/s,是以bit为单位的
可以看出就是我们常说的万兆网卡
4.3 时延查看连接某个ip的时延,最简单的方式就是通过ping命令来查看
root@93de58bae514:/# ping www.baidu.com
PING www.a.shifen.com (36.152.44.96) 56(84) bytes of data.
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=1 ttl=37 time=14.9 ms
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=2 ttl=37 time=18.2 ms
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=3 ttl=37 time=18.1 ms
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=4 ttl=37 time=18.4 ms
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=5 ttl=37 time=18.3 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4014ms
rtt min/avg/max/mdev = 14.999/17.650/18.419/1.329 ms
笔者在这里ping以下百度的域名
可以看出这个域名是通的,具体ip为36.152.44.96
而平均时延为17ms
总结:通过sar 、ping等命令我们可以很好的观察到网络性能相关指标。
多实战,多去用。
参考:极客时间
计算机网络的性能指标 - 明王不动心 - 博客园