本文目录导读:

net.core.wmem_default 是 Linux 内核参数,用于设置所有网络协议栈(如 TCP、UDP)使用的默认写缓冲区大小(单位:字节)。
设置方法有两种:
临时修改(立即生效,重启后失效)
使用 sysctl 命令:
# 将默认写缓冲区设置为 16MB(数值可根据需要调整) sudo sysctl -w net.core.wmem_default=16777216
注意:
- 设置的值必须是
2 的幂次方的倍数(4096, 8192, 16384...),推荐设置为 16KB ~ 16MB 之间的值。 - 常见生产环境推荐:
262144(256KB)或1048576(1MB)。 - 如果值设置过小(< 4096),内核会自动取整,可能导致预期不符。
永久修改(重启后保持)
编辑 /etc/sysctl.conf 或 /etc/sysctl.d/ 下的自定义配置文件(推荐):
# 使用编辑器打开配置文件 sudo nano /etc/sysctl.conf
在文件末尾添加:
net.core.wmem_default = 262144
保存退出后,执行以下命令使其生效:
sudo sysctl -p
🔍 验证当前值
sysctl net.core.wmem_default
示例输出:
net.core.wmem_default = 262144
⚠️ 注意事项
- 影响范围:该参数影响所有使用 socket 的协议(TCP、UDP、UNIX 域套接字等)。
- 与
wmem_max的关系:wmem_default是默认值,wmem_max是最大值(通过setsockopt(SO_SNDBUF)能设置的最大值)。- 建议
wmem_default≤wmem_max,否则默认值会被内核截断。 - 查看当前最大值:
sysctl net.core.wmem_max。
- 应用场景参考:
- 高吞吐、低延迟服务(如 Redis、Nginx):建议 256KB~1MB。
- 普通 Web 服务:默认值(208KB)已够用。
- 文件传输 / 视频流:可适当提高至 2MB~16MB,但需注意内存占用。
📌 完整建议(结合 tcp_wmem)
如果专门优化 TCP,建议同时调整 net.ipv4.tcp_wmem(TCP 写缓冲区的 min/default/max 三元组),
net.ipv4.tcp_wmem = 4096 65536 16777216
# min default max
这比仅改 wmem_default 更精细(因为 TCP 有独立的三段式控制)。
标签: 套接字写缓冲
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。