感谢支持
我们一直在努力

Linux UDP严重丢包问题的解决

测试系统在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


重新测试,没丢一条数据。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux UDP严重丢包问题的解决
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏