UDP内核丢弃UDP数据包
我有一个服务器通过多播发送UDP数据包和许多客户端列出这些多播数据包.
每个数据包的固定大小为1040字节,服务器发送的整个数据大小为3GByte. 我的环境如下: 1 Gbit以太网 40个节点,1个发送者节点和39个接收器节点. 在客户端,一个线程读取套接字并将数据放入队列.一个额外的线程弹出队列中的数据并进行一些轻量级处理. 在多播传输期间,我在节点侧识别出丢包率为30%.通过观察netstat -su统计数据,我可以说,客户端应用程序丢失的数据包等于netstat输出的RcvbufErrors值. 这意味着操作系统会丢弃所有丢失的数据包,因为套接字缓冲区已满,但我不明白为什么捕获线程无法及时读取缓冲区. 当然我知道UDP不可靠,我有自己的校正协议. 我没有任何管理权限,因此我无法更改系统参数. 任何提示如何提高性能? 编辑: 解决方法
跟踪
Linux上的网络丢失可能有点困难,因为有许多组件可能会发生丢包.它们可以在硬件级别,网络设备子系统或协议层中发生.
我写了一篇非常detailed blog post的文章,解释了如何监控和调整每个组件.由于有许多不同的组件需要监控和调整,因此在这里总结一下这个简洁的答案有点难. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |