Linux UDP
严重丢包问题的解决
测试系统在
Linux
上的性能发现丢包率极为严重,发
210000
条数据,丢包达
110000
之巨,丢包率超过
50%
。
同等情形下
Windows
上测试,仅丢几条数据。形势严峻,
必须解决。考虑可能是因为协议栈
Buffer
太低所致,于是先
看看默认情况:
sysctl -a |grep net.core
发现
net.core.rmem_max = 131071net.core.rmem_default =
112640
修改吧,变大一点,变成
10M
,然后
reboot
(应该
重启某个服务即可)然后查网卡收包情况:
netstat -su
结果
如下:
Udp:97690 packets received112310 packets to
unknown port received.0 packet receive errors20 packets
sent
发现数据在网卡就丢了,判断可能是防火墙引起的,于
是执行命令:
iptables -L
结果如下:
Chain INPUT (policy
ACCEPT)target prot opt source destinationChain
FORWARD (policy ACCEPT)target prot opt source
destinationChain OUTPUT (policy ACCEPT)target prot opt
source destination
证明
iptables
启动,于是停止防火墙:
service iptables stop
这个命令即时生效,
开启防火墙的命令:
service iptables start
如果要彻底关闭防火墙,
则需要重启后
生效开启:
chkconfig iptables on
关闭:
chkconfig iptables
off
在开启了防火墙时,做如下设置,开启相关端口,修改