一、背景
在使用iperf和iperf3进行udp的性能测试时,发现有大量丢包现象。
二、分析和参数调优
在server端通过netstat -su查看均在receive buffer errors丢包,说明数据包已经到server端,只是socket buffer满了导致丢包
通过sysctl -w net.core.rmem_max=26214400(单位为字节)的方式调整系统的最大socket buffer
在iperf的server端使用-w 4M的方式调整server端使用的socket buffer解决丢包问题(iperf3没有server端调整socket buffer的参数,只有client端有相关参数,实际不起效果)
其他参数调整,通过sysctl -w net.core.rmem_default = 212992(单位为字节)的方式调整系统默认的socket buffer,其中 rmem_default不能超过 rmem_max
通过sysctl -w net.ipv4.udp_mem="262144 327680 393216",用于增加最大可分配的 UDP 缓冲区空间总量,数值以页面为单位,每个页面单位等于4096 bytes