linux 协议栈 UDP Recv-Q饱和

RyaneLuo 发布于 2013/01/21 15:11
阅读 5K+
收藏 0

有个纯软件问题,其它人不知道遇到过类似的情况不:应用层的网络程序不发包,也不收包,netstat -an发现 Recv-Q的队列不断增大,到了一定程度就堵塞了。

我不方便截图,类似的情况如下图,但我发生的问题在UDP协议上:

Recv-Q Send-Q分别表示网络接收队列,发送队列。Q是Queue的缩写。

这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。如文中的示例,短暂的Send-Q队列发送pakets非0是正常状态。

以上一段话是搜索到的信息,有人解决过类似的问题么?



这个图是TCP,我是UDP,有人遇到过类似的情况么?

加载中
0
chishaxie
chishaxie
就有那个端口有人发包给你,你程序不接收,就放在队列里面啊,如果满了就会 UDP Error了
RyaneLuo
RyaneLuo
为什么会这样,一般哪些函数的哪些操作方式,导致了这个问题。 类似的问题如何重现?是否有case?
0
hefeimissyou
hefeimissyou

accept后阻塞操作了?accept阻塞操作的话,accept的速度低于链接连上来的速度,就会这样吧。

一般都是accept后,把链接交给线程去干活,然后立刻马上再accept


或者,多进程,监听同一个端口,抢着accept才行。



返回顶部
顶部