通过PROC信息调节TCP窗口
關(guān)于這些東西:http://man7.org/linux/man-pages/man7/tcp.7.html
?
1,?/sys/kernel/ipv4/tcp_rmem_xxx
? ?這種方式驗(yàn)證過(guò),把值得設(shè)置得很大的時(shí)候TCP速度有質(zhì)的提升
2,
/proc/sys/net/core/rmem_default 定義默認(rèn)的接收窗口大小
/proc/sys/net/core/rmem_max 定義接收窗口的最大大小
/proc/sys/net/core/wmem_default 定義默認(rèn)的發(fā)送窗口大小
/proc/sys/net/core/wmem_max 定義發(fā)送窗口的最大大小
/proc/sys/net/ipv4/tcp_window_scaling 啟用 RFC 1323 定義的 window scaling;要支持超過(guò) 64KB 的窗口,必須啟用該值。
?
3, 這個(gè)還沒(méi)弄明白
/proc/sys/net/ipv4/tcp_mem
/proc/sys/net/ipv4/tcp_wmem
/proc/sys/net/ipv4/tcp_rmem
4, 通過(guò)setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buflen, sizeof(int)) 設(shè)置的recv buf 大小與窗口究竟有什么關(guān)系呢?
? ? recv buf使用默認(rèn)大小80K時(shí),通告窗口常為18K左右
? ? recv buf設(shè)置為10MB后,通告窗口變成了40K左右
? ? 注:
? ? ?1> 通過(guò)配置/proc/sys/net/ipv4/tcp_rmem的大小將影響所有創(chuàng)建的socket的rcv buf大小,而
? ? ? ? ?通過(guò)setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buflen, sizeof(int)) 只設(shè)置當(dāng)前socket rcvbuf的大小。
? ? ?2>?recv buf使用默認(rèn)大小80K時(shí),通告窗口常為18K左右,?recv buf設(shè)置為10MB后,通告窗口變成了40K左右
? ? ? ? ?因?yàn)橥ㄟ^(guò)setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buflen, sizeof(int)) 設(shè)置的buf大小不能超過(guò)/proc/sys/net/core/rmem_max指定的大小,
? ? ? ? ?TCP實(shí)際分配的buf大小將是通過(guò)setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buflen, sizeof(int)) 指定的兩倍。
? ? ? ? ?
?
轉(zhuǎn)載于:https://www.cnblogs.com/vleung/p/4136322.html
總結(jié)
以上是生活随笔為你收集整理的通过PROC信息调节TCP窗口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python subprocess Po
- 下一篇: [ruby on rails] 跟我学之