TCP套接字不适合无明确证据情况下主动设置套接字缓冲区

结论先行

  • Linux TCP套接字默认缓冲区策略已很大程度上可以满足要求
  • TCP套接字并不适合主动设置套接字缓冲区,除非证明有必要!

因为TCP为可靠传输,并具有流量控制、拥塞控制等功能,所以,主动地单项提高套接字收发缓冲区,可能效果并不会太好

证据

  • Redis服务的配置文件不存在对于TCP套接字缓冲区的设置

Redis作为知名服务程序,并严重依赖TCP套接字进行工作,不主动设置TCP套接字缓冲区有其原因

  • sysctl -a -r '[wr]mem'命令显示套接字内核参数,仅具有IPv4的遗留TCP控制项,但更外现代的IPv6此类控制项并没有对应提供

反推此类设置可能并不合适

  • 测试Demo程序显示默认情况下TCP套接字缓冲区并不太小

  • 根据官网介绍Linux协议栈会根据主机情况进行智能确定

相关测试均在Linux环境中验证

setsockopt

setsockopt接口对于TCP套接字的缓冲区能够起到作用,并受系统内核参数net.core.[wr]mem_defaultnet.core.[wr]mem_max的影响。

但如上所述,它并不建议使用!

参考

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值