33.5.2. 系统范围的 TCP 套接字缓冲区设置


套接字缓冲区临时存储内核已接收或应发送的数据。

存在以下缓冲:

  • 读套接字缓冲区保存内核已收到但应用程序尚未读取的数据包。
  • 写套接字缓冲区保存应用程序已写到缓冲区,但内核尚未将它们传给 IP 堆栈和网络驱动程序的数据包。

如果 TCP 数据包太大,且超过缓冲区大小或数据包以很快的速度发送或接收,则内核会丢弃任何新传入的 TCP 数据包,直到数据从缓冲区中删除为止。在这种情况下,增加套接字缓冲区可以防止数据包丢失。

net.ipv4.tcp_rmem(读)和 net.ipv4.tcp_wmem(写)套接字缓冲区内核设置包含三个值:

net.ipv4.tcp_rmem = 4096  131072  6291456
net.ipv4.tcp_wmem = 4096  16384   4194304

显示的值以字节为单位,Red Hat Enterprise Linux 通过以下方式使用它们:

  • 第一个值是最小缓冲区大小。新套接字不能有更小的尺寸。
  • 第二个值是默认的缓冲区大小。如果应用程序没有设置缓冲区大小,则这是默认值。
  • 第三个值是自动调优缓冲区的最大大小。在应用程序中使用带有 SO_SNDBUF 套接字选项的setsockopt()函数禁用这个最大缓冲区大小。

请注意,net.ipv4.tcp_rmemnet.ipv4.tcp_wmem 参数为 IPv4 和 IPv6 协议设置套接字大小。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部