Linux下,tcp 最大发送和接收缓存的查看和修改

来源:互联网 发布:淘宝联盟鹊桥怎么用 编辑:程序博客网 时间:2024/06/05 14:20

在项目中碰到服务器发送数据大量丢失的情况,最后发现是linux的最大发送缓存问题,在这里记录下来。


查看系统默认的发送缓存大小:

   sysctl -a | grep net.ipv4.tcp_wmem   
   net.ipv4.tcp_wmem = 4096 16384 81920


查看 net.core.wmem_max:

    sysctl -a | grep  net.core.wmem_max


这有三个值,

    第一个值是socket的发送缓存区分配的最少字节数;

    第二个值是默认值(该值会被net.core.wmem_default覆盖),缓存区 在系统负载不重的情况下可以增  长到这个值;

    第三个值是发送缓存区空间的最大字节数(该值会被net.core.wmem_max覆盖)。

  

修改net.core.wmem_max:

       sysctl -w net.core.wmem_max=1048576


至于接收缓存把"wmem" 改为 “rmem”,如:

 修改net.core.rmem_max 用  sysctl -w net.core.rmem_max=1048576


这样以后在程序里通过 setsockopt 设置的缓存才会有效。

原创粉丝点击