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