https://blog.csdn.net/c359719435/article/details/8815499

    1. [root@riyimei ~]# cat /proc/sys/net/core/rmem_max
    2. 212992
    3. [root@riyimei ~]# cat /proc/sys/net/core/wmem_max
    4. 212992
    5. [root@riyimei ~]# cat /proc/sys/net/core/rmem_default
    6. 212992
    7. [root@riyimei ~]# cat /proc/sys/net/core/wmem_default
    8. 212992
    9. [root@riyimei ~]# cat /proc/sys/net/ipv4/tcp_wmem
    10. 4096 16384 4194304
    11. [root@riyimei ~]# cat /proc/sys/net/ipv4/tcp_rmem
    12. 4096 87380 6291456
    13. [root@riyimei ~]#
    1. 疑惑3linux手册中,接收缓冲区的默认值保存在/proc/sys/net/core/rmem_default,发送缓冲区保存在/proc/sys/net/core/wmem_default
    2. [root@cfs_netstorage core]# cat /proc/sys/net/core/rmem_default
    3. 1048576
    4. [root@cfs_netstorage core]# cat /proc/sys/net/core/wmem_default
    5. 512488
    6. 可知,接收缓冲区的默认值是:10485761M。发送缓冲区的默认值是:512488512K。为什么建立一个socket时得到的默认值是8738016384
    7. linuxsocket缓冲区大小的默认值在/proc虚拟文件系统中有配置。
    8. 分别在一下两个文件中:
    9. /proc/sys/net/ipv4/tcp_wmem
    10. [root@cfs_netstorage core]# cat /proc/sys/net/ipv4/tcp_wmem
    11. 4096 16384 131072 //第一个表示最小值,第二个表示默认值,第三个表示最大值。
    12. /proc/sys/net/ipv4/tcp_rmem
    13. [root@cfs_netstorage core]# cat /proc/sys/net/ipv4/tcp_rmem
    14. 4096 87380 174760
    15. 由此可见,新建socket,选取的默认值都是从这两个文件中读取的。可以通过更改这两个文件中的值进行调优,但是最可靠的方法还是在程序中调用setsockopt进行设置。通过 setsockopt的设置,能设置的接收缓冲区的最大值是8M,发送缓冲区的最大值是16MLinux 2.6.6中)