linux – 更高的rmem_max值导致更多的数据包丢失
rmem_max
Linux设置定义了接收UDP数据包的缓冲区的大小.
当流量变得太忙时,会开始丢包. 我制作了一个图表,显示了数据包丢失如何根据传入带宽增加. 如您所见,将rmem_max设置为26214400(深蓝色)会导致数据包丢失早于较小的值. Linux的默认值是131071(深绿色)看起来合理. 在这些情况下,为什么JBoss documentation建议将rmem_max设置为26214400? 我错过了什么? 详细信息:我在两个节点上都使用了sysctl -w net.core.rmem_max = 131071(例如),并用作服务器iperf -s -u -P 0 -i 1 -p 5001 -f M,另一个用作客户端iperf -c 172.29.157.3 -u -P 1 -i 1 -p 5001 -f M -b 300M -t 5 -d -L 5001 -T 1. 解决方法
更多缓冲区并不一定意味着更快的速度.更多缓冲区意味着更多缓冲区.低于某个值,您会看到溢出,因为应用程序无法足够快地为接收的数据提供服务.这很糟糕,但是即使在偶尔出现流量高峰的情况下,应用程序仍有足够的缓冲区以合理的速率进行服务,那么其他任何东西都可能被浪费掉.
如果你变得很大,那么你就会给内核带来更大的负担来寻找和分配内存,具有讽刺意味的是,这可能导致数据包丢失.我的预感是,这可能就是你所看到的,但需要确认一些其他指标. 2.5M数字可能来自围绕设置TCP的rmem和wmem值的建议 – 其中窗口大小调整和缓冲区设置之间的关系在某些情况下会产生显着影响.也就是说,TCP!= UDP – 但有些人认为如果它有助于TCP它也会帮助UDP.你有正确的经验信息.如果我是你,我会坚持256K的价值,甚至可以称之为. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |