Linux UDP 丢包问题


每个UDP包680字节左右,同时发送1500个包到服务器,发现大多被内核丢掉:

 

修改 /etc/sysctl.conf中关于socket缓冲区的配置 :

net.core.rmem_default = 256960

net.core.rmem_max = 256960

net.core.wmem_default = 256960

net.core.wmem_max = 256960

用sysctrl -p命令使配置生效,解决内核丢包问题

 

但是如果udp发送速率过大,内核缓冲区即使增大了,服务器应用程序如果处理不过来,仍然会在应用程序那丢包,因此要在应用程序中调大socket的接收缓冲区。

在java中这样调大:

DatagramPacket datagramPacket  = new DatagramSocket();

datagramSocket.setReceiveBufferSize(2040000);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM