什么是Linux的UDP的最大尺寸接收缓冲区?我以为这只是受可用RAM限制,但是当我设置的Linux的UDP最大规模的接收缓冲区
5GB的rmem_max:
echo 5000000000 > /proc/sys/net/core/rmem_max
和4GB的实际套接字缓冲区(二郎):
gen_udp:listen(Port, [{recbuf, 4000000000}])
当我衡量缓冲区利用率,它显示:
# netstat -u6anp | grep 5050
udp6 1409995136 0 :::5050 :::* 13483/beam.smp
我不能超过这个1.4GB。对于较小的缓冲区大小,例如500MB,实际缓冲区大小与配置值匹配。我的系统是Debian 6.0,机器有50GB RAM可用。
它在哪里说这是仅受可用RAM的限制?为什么你认为你需要一个4GB的缓冲区? – EJP 2013-05-09 11:59:58
它不。它并没有说它以任何其他方式受到限制。我需要这样一个缓冲区来避免在长时间的网络流量中丢失数据。 – 2013-05-09 12:05:36
恰恰相反。它说,内核可以调整你提供向上或向下的价值,并建议你打电话'的getsockopt()',看看有什么价值实际上被分配。我很难相信你需要4GB来处理流量高峰。可能你应该更快地阅读。 – EJP 2013-05-10 00:28:33