gpt4 book ai didi

java - 如何确定理想的数据报设置

转载 作者:行者123 更新时间:2023-11-30 11:50:44 25 4
gpt4 key购买 nike

我正在编写一个将使用高速 UDP 数据的 Java 客户端应用程序,并且我希望最大限度地减少主机/应用程序层的数据包丢失(我知道网络层可能存在不可避免的丢失)。

什么是合理的高缓冲区大小 (MulticastSocket.setReceiverBufferSize())?

理想的 DatagramPacket 缓冲区大小是多少?使用 64k 有缺点吗?

我对网络拓扑和发送方应用程序的了解非常有限。这是在 Linux 上运行的。 TCP 不是一个选项。

最佳答案

What is a reasobaly high Buffer Size (MulticastSocket.setReceiverBufferSize())?

确定您的应用程序可能抖动的程度以及您需要接收的数据速率。例如如果您的应用程序暂停执行某项操作 0.5 秒(如垃圾收集),并且您以 10MB/秒的速度接收数据,则您需要 5MB 的缓冲区来弥补这 0.5 秒内未接收到的数据。

请注意,您可能需要调整 linux 上的 net.core.rmem_max sysctl 以允许将缓冲区设置为所需的大小(iirc,您实际上只能获得指定大小的一半在 sysctl) 中,默认的 net.core.rmem_max 可能相当低。

What is the ideal DatagramPacket buffer size? Is there a downside to using 64k?

理想是MTU您的网络,对于普通以太网,这意味着 1472 字节的 UDP 负载。任何更大的东西都是一个坏主意,因为它会导致 IP 数据包碎片化 - IP 碎片通常被认为是一件坏事,因为它会导致更多的开销并可能导致更多的数据丢失。

关于java - 如何确定理想的数据报设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7824758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com