今天拿起来了以前一个写的程序,因为要上线了,所以同事进行了一次压力测试,经过测试,部分发送的UPD数据包被抛弃了,只好埋头处理了。
基本程序是这样的,建立UPD服务器用来接收数据包,创建另一个线程处理数据,完成逻辑需求,刚开始我是用一个全局字符串保存数据的,每次只能接收到61个数据包,以后的全被抛弃了,起初以为是PYTHON的字符串导致的结果,所以又将字符串转换为列表,效果依然一样,因为PYTHON提供了QUEUE的模块,所以又将列表转换为队列处理,终于超过61个啦,这个兴奋啊,有句话说的好,事情往往不是那么简单的,查询了日志,发现中间莫名其妙的丢掉了N多数据包,发送的值越大,丢包越严重。
第二天经过G,找到了,期间详细的说明了怎样检测UDP丢包和改变UDP缓存大小,所以检测了我的小LINUX上的设置情况 sysctl -a | grep net.core,数据显示是128K,经过适当放大以下两个参数
net.core.rmem_default
net.core.rmem_max
在经过测试,果然丢包的问题解决了。
Linux UPD数据包大小限制
原创
©著作权归作者所有:来自51CTO博客作者suchalin的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:wget 重试次数和超时时间
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
TCP、UDP数据包大小的限制
1、概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层
通信协议 tcp udp 数据 数据帧