我有一个Linux C++应用程序,它接收有序的UDP数据包.由于排序,我可以很容易地确定数据包丢失或重新排序的时间,即遇到"间隙"时.该系统具有处理间隙的恢复机制,但是,最好首先避免间隙.使用一个简单的基于libpcap的数据包嗅探器,我已经确定硬件级别的数据没有间隙.但是,我发现我的应用程序存在很多差距.这表明内核正在丢弃数据包; 通过查看/ proc/net/snmp文件来确认.当我的应用程序遇到间隙时,Udp InErrors计数器会增加.

在系统级别,我们增加了最大接收缓冲区:

# sysctl net.core.rmem_max

net.core.rmem_max = 33554432

在应用程序级别,我们增加了接收缓冲区大小:

int sockbufsize = 33554432

int ret = setsockopt(my_socket_fd, SOL_SOCKET, SO_RCVBUF,

(char *)&sockbufsize, (int)sizeof(sockbufsize));

// check return code

sockbufsize = 0;

ret = getsockopt(my_socket_fd, SOL_SOCKET, SO_RCVBUF,

(char*)&sockbufsize, &size);

// print sockbufsize

在调用getsockopt()之后,打印值总是它设置的2倍(上例中的67108864),但我相信这是可以预期的.

我知道无法快速消耗数据会导致数据包丢失.但是,所有这个应用程序都检查顺序,然后将数据推入队列; 实际处理在另一个线程中完成.此外,该机器是现代的(双Xeon X5560,8 GB RAM)和非常轻载.我们确实有几十个相同的应用程序以更高的速率接收数据,但没有遇到这个问题.

除了消耗太慢的应用程序之外,还有其他原因导致Linux内核可能丢弃UDP数据包吗?

FWIW,这是在CentOS 4上,内核为2.6.9-89.0.25.ELlargesmp.

linux下udp数据收不到包,Linux UDP数据包丢失的原因相关推荐

  1. linux下ping不通问题的说明与解决(DNS配置丢失)

    linux下ping不通问题的说明与解决(DNS配置丢失) 参考文章: (1)linux下ping不通问题的说明与解决(DNS配置丢失) (2)https://www.cnblogs.com/chou ...

  2. linux格式化大于2t硬盘分区,linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区...

    linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找 ...

  3. 在linux下vcd光盘提取,linux下抓取Vcd的视频文件[Linux安全]

    赞助商链接 本文"linux下抓取Vcd的视频文件[Linux安全]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判 ...

  4. linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案

    linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 参考文章: (1)linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 (2) ...

  5. linux中替换文件中的内容,linux下批量替换文件中的内容linux操作系统 -电脑资料...

    对于单个文件,使用sed命令很容易做到, grep命令可以查找单个文件或文件夹下文件中的内容,使用参数"r"或"-R"可以递归查找指定文件夹下的所有文件:参数& ...

  6. linux备份磁盘数据,linux下vmstat输出数据分析-linux下dd命令备份磁盘的节点(...-linux watch命令用法简介(图文)_169IT.COM...

    Linux下vmstat命令的输出,对应着很多选项,有的朋友不是很明白. 下面为大家作详细的分析,如下: Vmstat procs -----------memory---------- ---swa ...

  7. [转] linux下.tar .gz .tgz .bz2 .bz等解、压包命令详解

    tar命令 [原始位置:http://www.51testing.com/?uid-342316-action-viewspace-itemid-232627」 tar 可以为文件和目录创建档案.利用 ...

  8. linux下php可以实现哪些功能,基于Linux的远程管理系统的设计与实现(PHP)

    基于Linux的远程管理系统的设计与实现(PHP) 来源:2BYSJ.cn 资料编号:2SJ260700 资料等级:★★★★★ %D7%CA%C1%CF%B1%E0%BA%C5%A3%BA2SJ260 ...

  9. Linux下做一个arp欺骗程序6,LINUX下防ARP欺骗攻击

    arp欺骗的原理不多述,基本就是利用发送假的arp数据包,冒充网关.一般在网上通讯的时候网关的IP和MAC的绑定是放在arp 缓存里面的,假的arp包就会刷新这个缓存,导致本该发送到网关的数据包发到了 ...

  10. linux下imp导入oracle数据库,Oracle数据库Linux下的导入IMP

    和相关篇的EXP相对应的用了如下的导入方法. [oracle@localhost ~]$ imp Import: Release 11.2.0.1.0 - Production on Fri Sep ...

最新文章

  1. Java项目:学生管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)
  2. 万字详解本地缓存之王 Caffeine
  3. 【ADO.NET】2、各种版本的 简单登录验证
  4. [Linux学习]Linux键盘布局设置
  5. SAP CRM WebClient UI配置的加载逻辑
  6. html css导航栏字体图标,HTML+CSS入门之两种图标字体库
  7. 电脑运行java游戏,电脑运行软件卡顿?这几招游戏或是办公,让你速度飞起!...
  8. 台式电脑桌面没有计算机,台式电脑开机后屏幕没显示怎么解决?
  9. DS8100存储系统安装配置之个人总作篇
  10. 金三银四Java高级工程师面试题整理,2年以上经验必看
  11. 亚马逊Alexa已接入2万种设备,22岁开发者月入1万美元
  12. DDD Microservices
  13. labeltool标注工具使用说明
  14. ResNet网络 残差块的作用
  15. Error: Can't resolve 'fs' in (webpack 2配置CSS loadeers)
  16. 网络数据传输的节点大全
  17. 问题解决:系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的about_Execution_Policies
  18. 【刷题笔记】CG第二周
  19. 利用python的turtle库绘制玫瑰的步骤_用python turtle画玫瑰
  20. revit软件如何创建放样体量?revi哪个插件好用?

热门文章

  1. 总结及寒假计划 2019.1
  2. 国内外编译原理课程实践教学现状分析
  3. FANUC系统5136报警维修
  4. 【解决方案】国标GB28181级联EasyGBS及RTSP/SDK/Ehome协议平台EasyCVR在营业厅人脸识别监控系统中的应用
  5. 基于Java毕业设计校园线上点餐系统源码+系统+mysql+lw文档+部署软件
  6. 互联网金融系列-支付清算体系介绍-上
  7. Java毕设项目高校智慧校园学生系统(java+VUE+Mybatis+Maven+Mysql)
  8. 【Android】UI布局之线性布局(登录界面代码)
  9. Eclipse优化,关闭不必要的验证,简单粗暴!
  10. Oracle解决监听问题:OracleOraDb11g_home1TNSListener服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。