2020-12-17
基本衡量Linux网络性能的指标有以下四个:宽带、延时、吞吐率、PPS
宽带:表示链路层的最大传输速率,单位是b/s(比特/秒),宽带越大,其传输能力越强。
延时:表示请求数据包发送后,收到对端响应所需的时间延迟。(不同场景含义不同,如可表示建立TCP连接所需的时间延迟,或一个数据包往返所需的时间延迟)。
吞吐率:表示单位时间内成功传输的数据量,单位是b/s(比特/秒)或B/s(字节/秒),吞吐受宽带限制,宽带越大,吞吐率的上限就可能越高。
PPS:全称是Packet Per Second(包/秒),表示以网络包为单位的传输速率,一般用于评估系统对于网络的转发能力。
其他常用的性能指标:
网络可用性:表示网络是否能正常通信
并发连接数:表示TCP连接数
丢包率:表示所丢失数据包数量占所发送数据组的比率
重传率:表示重传网络包的比例
查看网络配置和状态(收发的数据包)
qq1.png
# ifconfig 或者 ip a 或者 ip -s addr show dev eth0 或者 ifconfig eth0
1. 网口的连接状态标志:ifconfig 中出现 RUNNING,或 ip中出现 LOWER_UP ,说明物理网路是连通的,网口已经连接到交换机或路由器等设备,反之表示网口没有接网线
2. MTU的大小:MTU:链路层的最大传输单元,默认值是1500字节,其主要作用是限制网络包的大小。若IP层有一个数据报要传,但数据帧的长度比链路层的MTU还大,此时IP层就需要对数据报进行分片,分成若干份,使每份的大小小于MTU的大小。(实际上,每个网络的链路层的MTU大小可能会不一样,所以MTU的数值尽可能调大或调小)
3. 查看网络配置:确认IP地址、子网掩码、MAC地址、网关地址等信息配置正确,否则会影响网络正常工作(cat /etc/sysconfig/network....)
4.统计网络包的收发:通常有网络收发的字节数、包数、错误数、丢包情况等,若TX(发送)和RX(接收)部分中errors、dropped、overruns、carrier、collisions等指标不为0时,则说明网络发送或接收出现问题。
(指标解析)
①errors:表示发生错误的数据包数,比如校验错误,帧同步错误等
②dropped:表示丢弃的数据包数,比如数据包已经收到Ring Buffer(一个内核内存中的缓冲区),但由于系统内存不足等原因导致丢包
③overruns:表示超限数据包数,即网络接收/发送速度过快,导致Ring Buffer中的数据包来不及处理,而导致丢包情况,因过多的数据包积挤压在Ring Buffer使其容易溢出
④carrier:表示发生carrier错误的数据包数,比如双工模式不匹配,物理电缆出线问题
⑤collisions:表示冲突、碰撞数据包数
查看socket信息
qq2.png
qq3.png
# netstat -nlp 或者 ss -nlp
1. netstat -nlp 解析
Proto : 协议
Recv-Q : 接收队列
Send-Q : 发送队列
Local Address : 本地地址
Foreign Address : 远端地址
State : socket的状态
PID/Program name : 进程名称/进程pid
2. ss -nlp 解析
Netid : 进程名,进程pid,fd
State : socket的状态
Recv-Q : 接收队列
Send-Q : 发送队列
Local Address:Port : 本地地址:端口
Peer Address:Port : 对端地址:端口
socket的状态解析:
1. socket处于Established(已经建立)
Recv-Q 表示socket缓冲区中还没有被应用程序读取的字节数
Send-Q 表示socket缓冲区还没有被远端主机确认的字节数
2. socket状态处于Listen(正在侦听)
Recv-Q 表示全连接队列的长度
Send-Q 表示全连接队列的最大长度
全连接队列:是指服务器与客户端完成了三次握手后,还没被accept()函数系统调用取走连接的队列
**全连接队列**原理:在TCP三次握手过程中,当服务器收到客户端的SYN包后,内核会把本次连接存储到半连接队列,然后再向客户端发送SYN+ACK包,接着客户端返回ACK,服务端收到第三次握手的ACK后,内核再把连接从半连接队列移除,然后创建完全的连接,并将其增加到全连接队列,等待进程调用accept()函数的时候再把连接取出来。
查看协议栈的统计信息
qq4.png
qq5.png
# netstat -s 或者 ss -s
1. netstat -s 解析
active connections openings : 主动连接数
assive connection openings : 被动连接数
failed connection attempts : 失败重试连接数
failed connection attempts : 发送连接数
segments received : 接收连接数
2. ss -s 解析
TCP中的estab : 已经连接数
TCP中的closed : 关闭连接数
TCP中的orphaned : 孤儿连接数
查看网络吞吐率和PPS
qq6.png
# yum -y install sysstat --下载工具包,里面包含sar命令,可查看网络的统计信息
sar常用参数
1. sar -n DEV 1,显示网口的统计数据,每隔1秒输出一次
2. sar -n EDEV,显示关于网络错误的统计数据
3. sar -n TCP,显示 TCP 的统计数据
sar输出信息 解析
IFACE:网络接口的名字
rxpck/s 和 txpck/s:表示接收和发送的PPS(每秒钟接收/发送的数据包),单位为包/秒
rxkB/s 和 txkB:表示接收和发送的吞吐率(每秒钟接收/发送的字节数),单位为KB/秒
rxcmp/s 和 txcmp/s:表示接收和发送的压缩数据包数,单位为包/秒
rxmcst/s:秒每种接收的多播数据包
查看宽带大小
# ethtool eth0 | grep Speed --eth0网卡的宽带为每秒一千兆比特
Speed: 1000Mb/s
宽带的单位通常是Gb/s 或 Mb/s
查看网络连通性和延时
qq7.png
# ping www.baidu.com -c 5 --查看本机与百度服务器之间的连通性和延时,-c 表示发送5次ICMP包
ping 命令参数解析
基于ICMP协议,工作在网络层
icmp_seq:ICMP序列号
ttl:生存时间或跳数
time:往返延时
0% packet loss:表示没有丢包
注意:ping不通的服务器不代表无法访问该服务器,可能是该服务器的防火墙禁用了ICMP协议不接受ping,但是接受http请求