我正在使用 Spring Boot 测试服务器,但是在测试过程中遇到了一些问题。
我的测试内容是:增加 WebSocket 会话(客户端数量)时,服务器使用多少内存。
1000 个客户端(小于 9000 个会话)没有问题。但是,当我尝试测试 1 万个连接时,服务器几乎创建了 10000 个连接(有时会创建 9990 个会话,有时会创建 9988、9996 等等,不是具体的套接字数限制),之后就停止创建会话,没有错误,只是没有响应。
如果某些客户端超时并释放连接,则其他等待连接的客户端将能够获得连接。
'环境' tomcat : 8.0.36 spring-boot : 1.3.3 java : 1.8
对于解决方案,我尝试了:
增加堆大小。
- 我增加了 5GB 的 JVM 堆内存,但用于连接的堆内存仅为 2GB。因此,我认为这与 JVM 内存无关。
我在 application.properties 中设置了 server.tomcat.max-thread = 20000。
- 但是失败了,与之前没有任何区别。
我真的很好奇这个问题。如果您知道此问题并且有想法,请让我知道原因。谢谢。
@Value("${server.tomcat.max-connections}") private int maxConnection;
然后使用该值。确切的属性键取决于您使用的Spring/Tomcat版本。 - StanislavL