Spring WebSocket发送缓冲区大小限制:单连接还是全局配置?
Spring WebSocket中setSendBufferSizeLimit的作用范围
registry.setSendBufferSizeLimit(sendBufferSizeLimit) 这个配置是针对单个WebSocket客户端连接的,并非全局服务级别的限制。
- 当通过
WebSocketHandlerRegistry设置该值时,Spring会为每个新建立的WebSocket连接单独分配对应大小的发送缓冲区。每个客户端连接都拥有独立的发送缓冲区,其最大容量就是你设置的sendBufferSizeLimit参数值。 - 该配置的核心作用是限制单个连接在发送数据时,可暂存的待发送数据的最大字节数,避免单个连接的大流量发送占用过多服务端内存资源。
- 若服务端同时承载N个WebSocket连接,理论上发送缓冲区的总内存占用上限约为
N × sendBufferSizeLimit(实际数值会因连接状态、数据发送效率等因素有所波动)。
如果需要实现全局层面的流量控制,你需要额外结合其他机制(比如连接数限制、全局流量阈值监控等),setSendBufferSizeLimit本身仅作用于单连接维度。
内容的提问来源于stack exchange,提问作者Dimitris Kremezis
相关产品推荐
相关产品推荐

