【发布时间】:2017-05-13 20:43:01
【问题描述】:
我在使用 Spring Boot、Spring WebSocket 和 Undertow 接收大型子协议消息时遇到了一些问题。消息在 16kB 后被切断。在进行了一些挖掘之后,我发现以下配置属性似乎可以满足我的要求:
server.undertow.buffer-size=32768
在检查 /configprops 执行器端点时,此配置属性似乎已正确获取。不幸的是,这似乎无助于接收大于 16kB 的消息。
我还从 Undertow 文档中偶然发现了这条不祥的线(重点是我的):
对于服务器来说,理想的大小通常是 16k,因为这通常是可以通过 write() 操作写出的最大数据量(取决于操作系统的网络设置) .
这证实了我所经历的设置server.undertow.buffer-size 没有任何效果,因为它受操作系统级别设置的限制。当我使用 Ubuntu Linux 时,我一直在摆弄net.core.rmem_* 和net.core.wmem_* 设置,但这些设置似乎也没有任何效果。在 macOS 上无法重现此问题。
有人知道如何配置 Undertow、Spring Boot 和/或 Spring WebSocket 来支持这些消息吗?
【问题讨论】:
标签: java ubuntu spring-boot haproxy undertow