10tcp緩沖區大小設置


在 socket用戶緩沖區、socket內核緩沖區與tcp協議buffer(滑動窗口)的關系 中,我們最主要的,認為java socket的緩沖區即是tcp滑動窗口

本文予以實踐認證

在之前的例子代碼中,socket緩沖區與沾包 nagle in tcp,兩邊加上s.getReceiveBufferSize()查看默認緩沖區大小

 

0 騰訊 centos 7 

[root@VM_0_9_centos ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 6291456
[root@VM_0_9_centos ~]# cat /proc/sys/net/ipv4/tcp_wmem
4096 16384 4194304

 

1 服務端 centos 7(騰訊雲) 客戶端 mac

服務端 centos 7(騰訊雲)

flush - false
43690
^C[root@VM_0_9_centos ~]# rm -rf *
[root@VM_0_9_centos ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 6291456

 

客戶端 mac

131860

131860

 

(1)默認情況

 C 131840 S 28960

 

(2)將兩邊都改為100

C 17496 S 1152 

 

(3)兩邊3000

 C 42360 S 2896

 

 看上去linux起作用了,client mac沒起作用

因此我們將客戶端也搬到linux上 

 

2 服務端 centos 7(騰訊雲) 客戶端 centos 6.8(阿里雲)

 

服務端 centos 7(騰訊雲)

flush - false
43690
[root@VM_0_9_centos ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 6291456

 

客戶端 centos 6.8(阿里雲)

43690 注釋read
8192 注釋 write
[root@iZ8vbdtd5039a0ye0oy5o4Z ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 1970176

 

(1)默認情況

C 14624 S 28960

 

(2)兩邊100

C(阿里) 1472 S(騰訊) 1152

 

(3)兩邊3000

C 4284 S 2896

 

 

3 服務端 centos 6.8(阿里雲)客戶端 centos 7(騰訊雲)

 (注意,阿里雲要額外配置端口准入)

服務端 centos 6.8(阿里雲)

flush - false
43690
^C[root@iZ8vbdtd5039a0ye0oy5o4Z ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 1970176

 

客戶端 centos 7(騰訊雲)

43690
8192
hello
[root@VM_0_9_centos ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 6291456

 

做個(2)兩邊100

C(騰訊) 1152  S(阿里) 1448

 

 

總結:

1 本文通過抓包找Win關鍵字,並通過反復設置,驗證了socket(java)的緩沖區即是內核緩沖區與tcp滑動窗口

2 linux 默認讀緩沖區並不是網上說的8k;接受窗口最大值也不是16位,看max?!

3 CentOS Linux release 7.5.1804 (Core) (騰訊)與 CentOS release 6.8 (Final)(阿里)存在一些差異,但基本按設置值響應了setSO_RCV_BUF,騰訊的更近些

4 以100設置為SO_RCV_BUF,系統會放到1100-1400

5 mac 本地沒有響應 setSO_RCV_BUF,https://www.iteye.com/blog/zhangyafeikimi-289019 該文中指出,windows也不鳥你

6 注意對於客戶端,要在connect前設置,對於服務端,要在bind前設置

7 linux默認40k讀、8k寫

 

 

tcp緩沖區設置抓包7.zip

內涵7個文件

mac - linux(騰訊)默認 100 3000

linux(阿里)-linux(騰訊)默認 100 3000

linux(騰訊)-linux(阿里)100


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM