一、修訂單個socket的緩衝區大小:經過setsockopt使用SO_RCVBUF來設置接收緩衝區,該參數在設置的時候不會與rmem_max進行對比校驗,可是若是設置的大小超過rmem_max的話,則超過rmem_max的部分不會生效;
二、修訂linux系統udp緩衝區大小:經過rmem_max來設置系統中udp緩存的上限,該值可經過以下方式查看:
root@ubuntu:/mnt/hgfs/vm-shared/socket# cat /proc/sys/net/core/rmem_max
131071
經過以下方式進行修訂:
root@ubuntu:/mnt/hgfs/vm-shared/socket# vi /etc/sysctl.conf
在文件/etc/sysctl.conf中新增以下信息:
rmem_max=MAX
須要注意的這裏設置的rmem_max參數是整個系統的大小,不是單個socket的大小。
修訂後的大小能夠經過以下命令查看:
root@ubuntu:/mnt/hgfs/vm-shared/socket# sysctl -a | grep rmem_maxlinux
net.core.rmem_max = 131071ubuntu
1. tcp 收發緩衝區默認值緩存
[root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_rmem socket
4096 87380 4161536tcp
87380 :tcp接收緩衝區的默認值spa
[root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_wmemip
4096 16384 4161536get
16384 : tcp 發送緩衝區的默認值udp
2. tcp 或udp收發緩衝區最大值grep
[root@ www.linuxidc.com]# cat /proc/sys/net/core/rmem_max
131071
131071:tcp 或 udp 接收緩衝區最大可設置值的一半。
也就是說調用 setsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 時rcv_size 若是超過 131071,那麼
getsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 去到的值就等於 131071 * 2 = 262142
[root@ www.linuxidc.com]# cat /proc/sys/net/core/wmem_max
131071
131071:tcp 或 udp 發送緩衝區最大可設置值得一半。
跟上面同一個道理
3. udp收發緩衝區默認值
[root@ www.linuxidc.com]# cat /proc/sys/net/core/rmem_default
111616:udp接收緩衝區的默認值
[root@ www.linuxidc.com]# cat /proc/sys/net/core/wmem_default
111616
111616:udp發送緩衝區的默認值
4. tcp 或udp收發緩衝區最小值
tcp 或udp接收緩衝區的最小值爲 256 bytes,由內核的宏決定;
tcp 或udp發送緩衝區的最小值爲 2048 bytes,由內核的宏決定