UDP丢包原因分析

2,025 阅读1分钟

1.检测方法

$ netstat -su


2. 原因分析

  1. 发送的数据包过大,超过以太网MTU值,这时UDP数据包会在网络层(IP)发生分片,分组交换的网络是不可靠的,存在着丢包。IP 协议的发送方不做重,接收方只有在收到全部的分片后才送至上层协议处理,否则在应用程序看来这些分组已经被丢弃。
  2. 发送频率过高导致UDP内核发送缓冲区满,导致丢包。
  3. 接收应用程序处理数据过慢,UDP内核接收缓存区满,导致丢包。

3.解决方法

  1. 设置系统默认缓存区大小
  2. 采用多线程方式接收数据,将接收和处理数据过程分开