当前位置: 代码迷 >> 综合 >> Linux性能优化实战 33-34:网络模型,性能指标,配置说明,性能检测
  详细解决方案

Linux性能优化实战 33-34:网络模型,性能指标,配置说明,性能检测

热度:81   发布时间:2023-12-21 15:25:45.0

原标题:关于 Linux 网络,你必须知道这些

一、网络模型

1.  国际标准化组织定义了一个七层的 OSI 网络模型,但是这个模型过于复杂。

2. 实际工作中的事实标准,是更为实用的 TCP/IP 模型

TCP/IP 模型,把网络互联的框架分为应用层、传输层、网络层、网络接口层等四层

(1) 应用层,负责向用户提供一组应用程序,比如 HTTP、FTP、DNS 等。

(2) 传输层,负责端到端的通信,比如 TCP、UDP 等。

(3) 网络层,负责网络包的封装、寻址和路由,比如 IP、ICMP 等。

(4) 网络接口层,负责网络包在物理网络中的传输,比如 MAC 寻址、错误侦测以及通过网卡传输网络帧等。

二、网络包的发送、接收流程

三、性能指标

1. 带宽:链路的最大传输速率,单位为 比特 / 秒

2. 吞吐量:单位时间内成功传输的数据量,单位也为 比特 / 秒

                  吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。

3. 延时: 从发出请求,到收到远端响应,所需要的时间。

4. PPS: Packet Per Second(包 / 秒)。

                PPS 通常用来评估网络的转发能力,比如硬件交换机。

 

四、网络配置

ifconfig命令 (或者ip命令,输出内容差不多)

1. 网络状态标志:RUNNING。 如果看不到,表示网线被拔掉了。

2. MTU 的大小:默认大小是 1500

3. 网络收发的字节数、包数、错误数以及丢包情况。

errors:错误的数据包数,比如校验错误、帧同步错误等;

dropped:丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包;

overruns:超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包;

carrier:发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;

collisions:碰撞数据包数。

 

五、套接字信息

1. netstat -nlp  

 接收队列(Recv-Q)和发送队列(Send-Q)应该是 0,不是 0 时,说明有网络包的堆积发生。

2. ss -ltnp

不同套接字状态下,含义不同。

(1) 套接字处于连接状态(Established)时,

Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数

Send-Q 表示还没有被远端主机确认的字节数

(2) 套接字处于监听状态(Listening)时,

Recv-Q 表示 syn backlog 的当前值。

Send-Q 表示最大的 syn backlog 值。

(3) syn backlog:半连接队列,就是还没有完成 TCP 三次握手的连接,连接只进行了一半。

            服务器收到了客户端的 SYN 包后,就会把这个连接放到半连接队列中,然后再向客户端发送 SYN+ACK 包。

   accept queue:全连接队列,完成了 TCP 三次握手。

           服务器收到了客户端的 ACK,完成了 TCP 三次握手。还需要再被 accept() 系统调用取走。

 

六、协议栈统计信息

netstat -s

展示了 TCP 协议的主动连接、被动连接、失败重试等各种信息。

 

七、网络吞吐和 PPS

sar -n DEV 1

rxpck/s 和 txpck/s 分别是接收和发送的 PPS,单位为包 / 秒。

rxkB/s 和 txkB/s 分别是接收和发送的吞吐量,单位是 KB/ 秒。

%ifutil 是网络接口的使用率

 

八、连通性和延时

使用  ping  测试远程主机的连通性和延时,而这基于 ICMP 协议。

从发送 ICMP 开始,到接收到 114.114.114.114 回复的确认,总共经历 244ms。