在Linux上,编写一个每秒接收100万UDP数据包的程序究竟有多难

 我来答
ennano
2017-04-28 · TA获得超过1744个赞
知道小有建树答主
回答量:813
采纳率:100%
帮助的人:298万
展开全部
UDP接收比TCP接收要简单很多,性能也要高很多
假设你要接受的UDP包都是最大MTU,不大于1500字节一个包,100万个UDP包也就是1.5GBps的流量,这个并不困难,当然首先网口要有足够的带宽。我以前开发的流媒体转发服务,在生产环境下,一台设备上游UDP包可以接收2.7GBps,并同时转发出去。
当然这个和程序运行的设备配置是有关系的,主要是网卡和CPU
给你几个建议:
1:多线程处理,单个线程处理能力还是有限的,同时尽量把线程绑定到CPU核上。
2:linux系统的网络参数要优化,包括读写缓冲区大小
3:如果非必要,可以采用阻塞模式接收,性能比非阻塞要好。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式