UDP传输大量数据的性能优化

在做一个UDP传输视频数据的项目时,数据码率波动在10Mbps~100Mbps,平均在60Mbps,遇到接收端存在丢包问题,通过下面的方法可以解决。

步骤1、修改socket的缓冲区大小

默认的socket缓冲区大小为164K,通过setsockopt使用SO_RCVBUF来设置接收缓冲区,通过setsockopt使用SO_SNDBUF来设置发送缓冲区,本项目我设置为1M(可以再调整)。


步骤2、修改linux系统udp缓冲区大小

通过rmem_max来设置系统中udp缓存的上限,sysctl -w net.core.rmem_max=128*1024*1024;同时可以设置发送缓存,sysctl -w net.core.wmem_max=128*1024*1024。

注意事项:socket缓冲区的大小不能超过linux的udp缓冲大小。

你可能感兴趣的:(linux,UDP缓冲区)