我在Linux系统上有一个Java应用程序,它打开UDP socket并等待消息。
在重负载几个小时后,会出现数据包丢失的情况,即内核接收到数据包,但我的应用程序未能接收到这些数据包(我们在抓包器中看到了丢失的数据包,我们在netstat中看到了丢失的UDP数据包,但在我们的应用程序日志中却没有看到这些数据包)。
我们尝试扩大socket缓冲区,但是没有效果 - 我们开始比以前更晚地丢失数据包,但仅此而已。
为了调试,我想知道任何时刻操作系统的udp缓冲区有多满。我已经搜索过了,但没有找到任何内容,你能帮忙吗?
附言:各位,我知道UDP不可靠。但是-我的计算机接收到所有的UDP消息,而我的应用程序无法消费其中的一些消息。我想将我的应用程序优化到最大程度,这就是我提出这个问题的原因。谢谢。