歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux UDP嚴重丟包問題的解決

Linux UDP嚴重丟包問題的解決

日期:2017/2/28 16:45:02   编辑:Linux教程

測試系統在Linux上的性能發現丟包率極為嚴重,發210000條數據,丟包達110000之巨,丟包率超過50%。同等情形下Windows上測試,僅丟幾條數據。形勢嚴峻,必須解決。考慮可能是因為協議棧Buffer太低所致,於是先看看默認情況:

sysctl -a |grep net.core

發現

net.core.rmem_max = 131071

net.core.rmem_default = 112640

修改吧,變大一點,變成10M,然後reboot(應該重啟某個服務即可)

然後查網卡收包情況:

netstat -su

結果如下:

Udp:

97690 packets received

112310 packets to unknown port received.

0 packet receive errors

20 packets sent

發現數據在網卡就丟了,判斷可能是防火牆引起的,於是執行命令:

iptables -L

結果如下:

Chain INPUT (policy ACCEPT)

target prot opt source destination

Chain FORWARD (policy ACCEPT)

target prot opt source destination

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

證明iptables啟動,於是停止防火牆:

service iptables stop

這個命令即時生效,開啟防火牆的命令:

service iptables start

如果要徹底關閉防火牆,則需要重啟後生效

開啟: chkconfig iptables on

關閉: chkconfig iptables off

在開啟了防火牆時,做如下設置,開啟相關端口,

修改/etc/sysconfig/iptables 文件,添加以下內容:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

重新測試,沒丟一條數據。

Copyright © Linux教程網 All Rights Reserved