ipv4协议规定ip层的最小重组缓冲区大小为576!所以,建议udp包不要超过这个大小,而不是因为internet的标准mtu是576!
要更改容器内的 UDP 缓冲区,可以通过挂载 sysctl.conf 文件来实现。sysctl.conf 文件包含了系统的内核参数设置,可以使用它来更改容器内的 UDP 缓冲区大小。
以下是一些步骤:
在主机上创建一个 sysctl.conf 文件,其中包含要更改的内核参数。例如,要更改 UDP 缓冲区大小,可以在 sysctl.conf 文件中添加以下行:
net.core.rmem_max = 26214400
net.core.wmem_max = 26214400
在运行容器时,将主机上的 sysctl.conf 文件挂载到容器内的 /etc/sysctl.d 目录。例如:
docker run -it --sysctl=/path/to/sysctl.conf centos
在容器内,使用 sysctl 命令来加载新的内核参数设置。例如:
sysctl -p /etc/sysctl.d/sysctl.conf
请注意,如果容器内的 /etc/sysctl.conf 文件是只读的,那么可能需要使用 --privileged 选项来启动容器,以便具有足够的权限来更改该文件。然而,这并不是一个安全的做法,因为容器中的应用程序可能会访问到潜在危险的内核参数设置,所以最好避免使用 --privileged 选项。
有3点值得说明:1. 上面我们仅仅写了接收的内核缓冲区, 关键字是SO_RCVBUF, 如果是发送的内核缓冲区, 那就用SO_SNDBUF, 有兴趣的童鞋可以稍微修改一下上面程序即可。
2. 从程序的结果我们可以看到, sockClient1和sockClient2两者的发送内核缓冲区没有任何关系。
3. 听一网友说过, tcp才有所谓的内核缓冲区, udp没有。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)