一 网络概念:
1.带宽: 标识网卡的最大传输速率,单位为b/s,比如1Gbps,10Gbps,相当于马路多宽
2.吞吐量: 单位时间内传输数据量大小单位为b/s或B/s ,吞吐量/带宽,就是网络的使用率,相当于单位时间内马路上路过有多少人吧(包括车里的等)
3.延时: 发送网络请求,到收到远端响应,需要的时间延迟,比如TCP握手延迟,或者数据包往返时间,相当于一去一回时间。
4.PPS : 每秒转发包数量,如果吞吐量是以字节为单位,pps是以包为单位,可以理解成路上车的数量,以车位单位。
5.并发连接数: TCP连接数量
6.丢包率: 丢包的百分比
7.重传率: 重传的包的比例。
二 网卡有用命令
2.1 监控是否丢包 watch
watch -d ifconfig ens33
errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;
dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包,主要应用层或系统内核处理慢;
overruns 表示超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包(网卡收包队列已满);
carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;collisions 表示碰撞数据包数。
collisions 表示碰撞数据包数。
2.2 查看系统中连接信息
netstat -lnp
其中:
-l 表示只显示监听套接字 ; -n 表示显示数字地址和端口(而不是名字)
-p 表示显示进程信息
[root@iZbp10p2g1civrw4ggigvfZ ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1444/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 20330/nginx: master
tcp 0 0 0.0.0.0:2332 0.0.0.0:* LISTEN 1712/nginx: master
tcp 0 0 0.0.0.0:5278 0.0.0.0:* LISTEN 27975/java
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1840/php-fpm: maste
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1937/mysqld
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1684/redis-server 0
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 20330/nginx: master
tcp 0 0 0.0.0.0:2353 0.0.0.0:* LISTEN 24490/sshd: /usr/sb
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 1/systemd
tcp6 0 0 :::25 :::* LISTEN 1444/master
tcp6 0 0 :::33060 :::* LISTEN 1937/mysqld
tcp6 0 0 :::2353 :::* LISTEN 24490/sshd: /usr/sb
udp 0 0 0.0.0.0:68 0.0.0.0:* 1026/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 749/chronyd
udp6 0 0 ::1:323 :::* 749/chronyd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
....
ss -ltnp
-l 表示只显示监听套接字
-t 表示只显示 TCP 套接字
-n 表示显示数字地址和端口(而不是名字)
-p 表示显示进程信息
注意:下面是ss命令下的解释:
Established 状态时,Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数( ,而 Send-Q 表示还没有被远端主机确认的字节数
LISTEN 状态时候Recv-Q表示使用的全连接队列的长度 Send-Q 表示全连接队列的最大长度。
ss 只显示已经连接、关闭、孤儿套接字等简要统计,而 netstat 则提供的是更详细的网络协议栈信息。
netstat -s
root@iZbp10p2g1civrw4ggigvfZ ~]# netstat -s
Ip:
368894134 total packets received
0 forwarded
0 incoming packets discarded
368894127 incoming packets delivered
204418238 requests sent out
133 dropped because of missing route
7 reassemblies required
1 packets reassembled ok
Icmp:
91913511 ICMP messages received
90910972 input ICMP message failed.
InCsumErrors: 2
ICMP input histogram:
destination unreachable: 4391
....
netstat 在排查tcp连接时候还是非常有用的,比如我们可以通过:
netstat -s | egrep "listen"
79019 times the listen queue of a socket overflowed
多次观察是否会增加,如果会增加,说明有监听队列满了,导致的连接拒绝问题。
如果队列满了,可以通过查看:
cat /proc/sys/net/ipv4/tcp_abort_on_overflow
值为0 表示连接队列如果满了,系统会直接扔掉客户端的ack报文,将这个值改成1,会在队列满的情况下直接发reset包给客户端。
ss -s 命令统计信息:
[root@iZbp10p2g1civrw4ggigvfZ ~]# ss -s
Total: 210 (kernel 276)
TCP: 22 (estab 7, closed 2, orphaned 0, synrecv 0, timewait 1/0), ports 0
Transport Total IP IPv6
* 276 - -
RAW 0 0 0
UDP 3 2 1
TCP 20 17 3
INET 23 19 4
FRAG 0 0 0
2.3 网络统计指标统计信息
sar -n DEV 1
[root@iZbp10p2g1civrw4ggigvfZ ~]# sar -n DEV 1
Linux 3.10.0-1062.4.3.el7.x86_64 (iZbp10p2g1civrw4ggigvfZ) 12/25/2021 _x86_64_ (2 CPU)
02:16:52 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
02:16:53 PM eth0 0.99 0.99 0.06 0.09 0.00 0.00 0.00
02:16:53 PM lo 11.88 11.88 1.95 1.95 0.00 0.00 0.00
02:16:53 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
02:16:54 PM eth0 0.99 0.99 0.06 0.17 0.00 0.00 0.00
02:16:54 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- rxpck/s 和 txpck/s 每秒接收的数据包数量和每秒发送数据包的数量。
- rxkB/s 和 txkB/s 每秒接收的字节数和发送的吞吐量。
- rxcmp/s 和 txcmp/s 每秒钟接收和发送的压缩数据包。
- rxmcst/s 每秒收到多播的数量。
2.4 带宽查看
[root@localhost ~]# ethtool ens33 | grep Speed
Speed: 1000Mb/s
以上为千兆网卡
2.5 连通性测试和延时查看
这个比较简单,我们一般通过ping进行测试,如下:
[root@localhost ~]# ping -c10 www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=55 time=36.2 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=55 time=36.1 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=55 time=35.8 ms
...
time=35.8 ms 标识往返时延。
设置ping包大小,可以测试网络中mtu大概范围:
[root@localhost ~]# ping -c 4 -s 1420 www.baidu.com
PING www.a.shifen.com (14.215.177.38) 1420(1448) bytes of data.
1428 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=55 time=36.4 ms
1428 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=55 time=35.2 ms
1428 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=55 time=36.5 ms
网友评论