我有一个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. 2018-8-22-粒子滤波
  2. AI一键去纹身,几秒钟让你看见明星「真面目」
  3. 到2020年,将有60%的工作被人工智能取代?
  4. 高并发缓存处理之——缓存穿透的几种形式及解决方案
  5. python蟒蛇绘制 C
  6. 数据查询分页显示的优化方法
  7. wdcp 去掉index.php,Nginx环境下Oneindex去除网址内的“?”
  8. 如何下载EP的各个版本?
  9. 产品经理应该掌握的3种金融思维
  10. 什么情况下document.write会覆盖页面及覆盖原理解释
  11. docker 系列 - 基础镜像环境和Docker常用命令整理
  12. codeforces 884F 费用流,图解很清晰
  13. 我们应该拥有怎样的职场价值观
  14. linux佳能打印机服务,linux桌面打印机配置指南
  15. 【论文泛读17】BERT后训练复习阅读理解和基于方面的情感分析
  16. [笔记]Open3D基础知识及例程demo
  17. 设计思维引导设计实践
  18. python画爱心原理_如何理解python一行代码实现一个爱心字符画?
  19. HanLP中的人名识别分析详解
  20. 怎样把COFFEEscript 编译成JS

热门文章

  1. 字幕滚动效果html,修改好的jquery滚动字幕效果实现代码
  2. libserial_port.so免费下载,包含所有库版本
  3. 我,阿里的程序员,工作5年,揭露阿里员工的真实收入和工作经历
  4. [附源码]SSM计算机毕业设计社区医院电子病历系统JAVA
  5. 关闭小米路由器防火墙 放行端口
  6. 均值滤波和中值滤波的MATLAB实现
  7. galerkin有限元法matlab实现,PDE的Galerkin和有限元的MATLAB程序
  8. 图论及其应用 2008年期末考试 答案 总结
  9. RSA密钥证书的生成
  10. 中科图灵发布国内首家开源免费的智慧消防云平台