问题:
以下是一些信息:
- OS : Ubuntu 20.04 (LTS) x64
- 服务器: Apache/2.4.41
- 应用类型: Python - Flask
- 托管公司:Digital Ocean
在告诉我改变窗口大小不能工作之前,请参考这个答案,https://networkengineering.stackexchange.com/a/2297/71565
答案1:
由于TCP头的限制,基本窗口大小不能超过65535字节,来自RFC 1323:
TCP标头使用16位字段向发送方报告接收窗口大小,因此,可以使用的最大窗口是2*16 *65K字节。
这并不意味着TCP窗口不能更大,因为现代的OSes支持TCP窗口缩放,其中窗口大小通过向上缩放来动态增加14X,但是,可以在达到最大缩放比例之前配置上限。
供参考,这些是Ubuntu 20.04上的相关参数(及其默认值):
net.ipv4.tcp_window_scaling = 1 ;scaling enabled
net.ipv4.tcp_rmem = 4096 131072 6291456 ;min, default and max receive window
net.ipv4.tcp_wmem = 4096 16384 4194304 ;min, default and max send window
net.core.rmem_max = 212992 ;max absolute limit for receive buffer
net.core.wmem_max = 212992 ;max absolute limit for send buffer
实际的最大窗口大小在[r|w]mem_max
和tcp_[r|w]mem
的第三个值之间较小,因此在Ubuntu 20.04上,默认情况下实际的最大接收和发送窗口为212992字节。要将该限制增加到4MB,可以执行以下操作:
sysctl -w net.core.rmem_max=4194304
sysctl -w net.core.wmem_max=4194304
如果有效,可以通过编辑/etc/sysctl.conf
来保留设置
相关文章