内核 · 2026-09-28

socket 缓冲区设太大,反而可能更慢

直觉是缓冲区越大,越不容易因为窗口不足而停滞。但对小内存机器,过大的缓冲区会导致内存被连接占满,进而触发回收压力,整体性能反而下降。

合理的做法是让内核自动调优(tcp_moderate_rcvbuf),只在明确知道带宽时延积的场景手动设值。手动设值又不算 BDP,等于碰运气。

BDP 的计算很简单:带宽 × RTT。100Mbps × 200ms = 20Mbit = 2.5MB。要跑满这条链路,接收窗口至少得有这么宽。低于这个值,吞吐被窗口卡死;远高于这个值,浪费内存。

所以「缓冲区设多大」这个问题没有通用答案,只有「对这条链路、这个并发量」的答案。

← 返回索引