我在实际测试的时候发现;单独存储数据或单独接收组播数据都能达到要求(存得过来,也能保证丢包率稳定在允许范围内),但是边收边存就会导致丢包率猛增。
在看过下面的博文后,得知磁盘IO操作频繁会导致CPU等待而不能及时处理内核socket缓冲区中的udp数据包 (ps:该文前面所说的MTU限制并不适用于我当前的内网环境)
该文所说的磁盘IO操作与SOCKET缓冲区的抢夺CPU是否正确?
是否有方法规避该问题 ,比如单个存储文件的大小与单次写入大小是否存在最佳效率?
浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)http://www.cnblogs.com/linuxbug/p/4906000.html
UPD 丢包很严重的,如果传输的信息安全程度高的话,建议不要使用,使用TCP 比较好,使用内存映射的方式,如果包很多的话,会发生阻塞,更会加剧
信息 传输的 不可靠, 建议最一个内存 阀值检查,一旦超过,就 立即停止发送或接收, 过一段时间再发