Linux超实用网络篇汇总-001
1.网络性能指标:
带宽:表示链路的最大传输速度,单位通常为b/s 即 比特/秒。
吞吐量:表示单位时间内成功传输的数据量,单位通常为b/s or B/s。
网络使用率:吞吐量/带宽
延时:表示从网络请求发出到远端响应,所需要的时间延迟。需要具体看,例如TCP的握手延时,例如一个数据包往返所需要的时间RTT。
PPS:表示以网络包为单位的传输速率。通常用来评估网络的转发能力。
网络可用性:网络能否正常通信
并发连接数:TCP连接数量
丢包率:网络丢包的百分比
重传率:重新传输的网络包比例
2.网络接口配置状态信息:
[root@VM-12-14-centos ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.12.14 netmask 255.255.252.0 broadcast 10.0.15.255
inet6 fe80::5054:ff:feff:5c22 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:ff:5c:22 txqueuelen 1000 (Ethernet)
RX packets 6106408 bytes 2017771456 (1.8 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5660890 bytes 2143601056 (1.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@VM-12-14-centos ~]# ip -s addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 52:54:00:ff:5c:22 brd ff:ff:ff:ff:ff:ff
inet 10.0.12.14/22 brd 10.0.15.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:feff:5c22/64 scope link noprefixroute
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
2017793689 6106677 0 0 0 0
TX: bytes packets errors dropped carrier collsns
2143634000 5661107 0 0 0 0
注意:
1.网络接口的状态标志。
ifconfig 输出的RUNNING,ip 输出的LOWER_UP 都表示网络是联通的。即网卡已经连接到交换机or路由器中。
2.MTU的大小。
默认是1500
3.网络接口的IP地址,子网掩码,MAC地址。
4.网络收发的字节数,包数,错误数,丢包情况。(TX和RX部分的errors,dropped,overruns,carrier,collisions不为0的时候,通常代表出现了网络I/O问题)
4.1.errors 表示发生错误的数据包数,例如校验错误,帧同步错误。
4.2.dropped 表示丢弃的数据包数,数据包已经收到了Ring Buffer,但内存不足等原因丢包。
4.3.overruns 表示超限数据包数,网络I/O速度过快,导致Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包。
4.4.carrier 表示发生carrier错误的数据包数,比如双工模式不匹配,物理电缆出现问题等。
4.5.collisions 表示碰撞数据包数。
3.套接字信息:
[root@VM-12-14-centos ~]# ss -ltnp | head -n 10
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 511 0.0.0.0:8904 0.0.0.0:* users:(("nginx",pid=2281565,fd=17),("nginx",pid=2281564,fd=17),("nginx",pid=70053,fd=17))
LISTEN 0 300 0.0.0.0:3306 0.0.0.0:* users:(("mysqld",pid=71017,fd=36))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=2281565,fd=8),("nginx",pid=2281564,fd=8),("nginx",pid=70053,fd=8))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=49679,fd=5))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=49679,fd=6))
注意:
Recv-Q(接收队列),Send-Q(发送队列),当它们不是0的时候,要注意有没有网络包堆积的问题。
1.当套接字连接处于Established。
Recv-Q 表示套接字缓存还没有被应用程序取走的字节数,即接收队列长度。(如果接收队列Recv-Q一直处于阻塞状态,也就是Recv-Q值不为零并且值挺大,可能是遭受了Dos 攻击。 )
Send-Q 表示还没有被远端主机确认的字节数,即发送队列长度。(如果看到是大量的 send-Q ,可以判定是发送数据给目的地址的时候出现了阻塞的问题,导致了包堆积在本地缓存中,不能成功发出去。那么问题就可能产生在了客户端,根据业务逻辑可以看看是不是客户端发送的TCP长连接数量过多。验证办法,尝试减少客户端和服务的长连接.查看效果。)
2.当套接字连接处于Listening。
Recv-Q 表示全连接队列的长度。
Send-Q 表示全连接队列的最大长度。
3.全连接
指服务器收到客户端的ACK,完成TCP的三次握手,然后会把这个连接挪到全连接队列中。
4.半连接
指还没有完成TCP的三次握手的连接。
ps:
涉及到半连接队列,全连接队列溢出,堆积的问题。
https://102.alibaba.com/detail?id=140
https://www.jianshu.com/p/0d18a1ef32ed
4.网络吞吐相关信息:
[root@VM-12-14-centos ~]# sar -n DEV 1
Linux 4.18.0-305.3.1.el8.x86_64 (VM-12-14-centos) 2022年02月09日 _x86_64_ (2 CPU)
11时35分12秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
11时35分13秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时35分13秒 eth0 15.00 15.00 1.25 3.45 0.00 0.00 0.00 0.00
11时35分13秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
11时35分14秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时35分14秒 eth0 2.00 4.00 0.14 1.09 0.00 0.00 0.00 0.00
11时35分14秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
11时35分15秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时35分15秒 eth0 3.00 5.00 0.15 0.91 0.00 0.00 0.00 0.00
11时35分15秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
11时35分16秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时35分16秒 eth0 1.00 3.00 0.06 0.83 0.00 0.00 0.00 0.00
11时35分16秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
11时35分17秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11时35分17秒 eth0 1.00 3.00 0.06 0.83 0.00 0.00 0.00 0.00
注意:
1.rxpck/s 和 txpck/s,接收和发送的PPS,包/秒。
2.rxkB/s 和 txkB/s,接收和发送的吞吐量,KB/秒。
3.rxcmp/s 和 txcmp/s,接收和发送的压缩数据包数,包/秒。
5.连通性和延时:
[root@VM-12-14-centos ~]# ping -c 3 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
64 bytes from 114.114.114.114: icmp_seq=1 ttl=61 time=10.3 ms
64 bytes from 114.114.114.114: icmp_seq=2 ttl=86 time=10.1 ms
64 bytes from 114.114.114.114: icmp_seq=3 ttl=84 time=10.2 ms
--- 114.114.114.114 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 10.093/10.193/10.255/0.071 ms
注意:
ping的输出包含俩部分
1.每个ICMP的请求信息,ICMP序列号,TTL,往返时间延迟。
2.ICMP多次请求的汇总信息,平均往返时延(RTT)10ms。