udp接收缓冲设置多大

news/2025/1/12 9:57:22/

先说一下保护消息边界,就是指传输协议把数据当作一条独立的消息在网上传输,接收端只能接收独立的消息。这个机制决定了udp的特性:
1. udp可以多线程对同一个fd进行发包操作,如果是tcp多线程发送,会让流乱序,接收端完全无法解析出来
2. udp接收端每次只能拿到一个包,tcp需要借助自定义包头来拆分出一个一个的包

假如现在发送端发送了长度为100,200,300的3个包,接收端需要调用3次recvfrom才能取完,并且不能保证先后顺序。一般情况下,为了保证recvfrom成功,我们要保证接收缓冲大于报文的大小,也就是缓冲设置比最大的300要大。但是还是会丢包,常见情况有:
1. 发送端抖动突然请求量很大,而接收端不能在短时间内处理这些请求,造成缓冲区不够用
2. 接收端需要访问磁盘等IO操作,磁盘也会抖动,导致接收端处理能力下降,造成缓冲区不够用
很明显解决方案是加大缓冲区,那么是不是越大越好?
成熟的系统逻辑一般都会有处理超时机制,假设超时时间是1s,前端页面发送请求会带上时间戳,并且自己也开始计时,如果1s内还没有收到回复就弹请求超时页面,后台收到请求查看时间戳超过1s也不会处理直接丢掉。
假如现在接收缓冲设置为可以存放100个请求的大小,后台处理能力是10个/s,1s之后处理了10个请求,接收缓冲中后面90个请求的前端页面已经弹了请求超时了,另外新的10个请求进来了接收缓冲,后台接着处理结果后面连续90个都是超时,终于才轮到新的10个请求可以处理了,这是不科学的,所以接收缓冲的大小最优的是设置为超时时间*后台处理能力,也就是10个请求包的大小。


http://www.ppmy.cn/news/724267.html

相关文章

STM32堆栈空间大小设置

1. 设置堆栈空间大小 在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x400(1024Byt…

32位计算机最大内存怎么算,windows32位系统支持多大内存 怎么查看计算机内存

windows 32位系统支持多大内存?大家都知道,电脑有32位系统和64位系统之分,支持的内存也是不同的。最近有用户就特别好奇,32位的操作系统到底支持多大的内存呢?电脑又要如何查看计算机内存呢?假如你想了解的…

dig/curl/ping的用法和区别

dig是一种DNS工具,用于查询DNS服务器上的域名解析信息。它可以查询域名的IP地址、MX记录、CNAME记录等。dig可以帮助用户诊断DNS解析问题,例如查询某个域名是否被正确解析,或者查看某个域名的DNS记录是否正确。 用法: dig [选项]…

python导入的模块搜索顺序详解(python import搜寻模块的机制详解)

参考 python导入的模块搜索顺序详解(python import搜寻模块的机制详解):https://blog.csdn.net/qq_27825451/article/details/100552739 import sys sys.path 返回的列表为: [, # 运行程序的根目录D:\\ProgramData\\Anaconda3…

坐飞机还是尽量早点出发(差点误机)

昨天早上起来,计划7点出发。结果一折腾,再打车,快7点半了。大家知道,这个时候路上很堵的,又是周一……心里这个急啊。每个路口都堵,而且都是红灯,一个绿灯还过不了。误机…

倒计时11天!全球边缘计算大会参会指南来啦!

全球边缘计算大会•上海站 参会指南 见证边缘的力量 10月23日(周六) 上海长宁区天山西路舜元会议中心(靠近虹桥) 目录 1.大会介绍 2.主办单位 3.峰会议程 4.交通指南 4.1 飞机 4.2 高铁 5.天气指南 6.签到&用餐指南 6.1 签到…

通信工程师出差生存指南

对于通信人来说,出差是一件很常见的事情。 且不说售前售后那些需要直面客户的岗位,就连研发,也经常会被安排出差。美其名曰:“外场支援”。 然而,就是这么一件看似普通的任务,往往会有同事在上面吃亏&#…

android 飞行模式做了什么好处,手机“飞行模式”竟然有这么多好处?

原标题:手机“飞行模式”竟然有这么多好处? 每部手机都有飞行模式,原本的用意是关闭所有网络,在飞机飞行的途中不会干扰到飞机上面的仪器。 那为什么坐飞机的时候必须关机呢?主要是因为即使在飞行模式下,手…