欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

java udp丢包_linux 系统 UDP 丢包问题分析思路

发布时间:2023/12/1 linux 62 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java udp丢包_linux 系统 UDP 丢包问题分析思路 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考。

在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程。

●  首先网络报文通过物理网线发送到网卡

●  网络驱动程序会把网络中的报文读出来放到 ring buffer 中,这个过程使用 DMA(Direct Memory Access),不需要 CPU 参与

●  内核从 ring buffer 中读取报文进行处理,执行 IP 和 TCP/UDP 层的逻辑,最后把报文放到应用程序的 socket buffer 中

●  应用程序从 socket buffer 中读取报文进行处理

在接收 UDP 报文的过程中,图中任何一个过程都可能会主动或者被动地把报文丢弃,因此丢包可能发生在网卡和驱动,也可能发生在系统和应用。

之所以没有分析发送数据流程,一是因为发送流程和接收类似,只是方向相反;另外发送流程报文丢失的概率比接收小,只有在应用程序发送的报文速率大于内核和网卡处理速率时才会发生。

本篇文章假定机器只有一个名字为 eth0 的 interface,如果有多个 interface 或者 interface 的名字不是 eth0,请按照实际情况进行分析。

NOTE:文中出现的 RX(receive) 表示接收报文,TX(transmit) 表示发送报文。

确认有 UDP 丢包发生

总结

以上是生活随笔为你收集整理的java udp丢包_linux 系统 UDP 丢包问题分析思路的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。