小编典典

Spring-boot tomcat只能提供少于10,000个连接?

spring-boot

我正在使用spring-boot测试服务器。但是,我在进行测试时遇到了一些问题。

我的测试是随着Web套接字会话(客户端数量)的增加,服务器使用多少内存。

1,000个客户端(少于9000个会话)没有进行测试的问题。但是,当我尝试测试10k连接时,服务器几乎建立了直到10,000个连接(有时会创建会话,直到9990,有时是9988、9996,而不是特定的套接字数量),之后才停止创建会话,没有错误只是没有响应。

如果某些客户端超时并释放连接,则其他正在等待连接的客户端可以获取连接。

‘环境’tomcat:8.0.36 spring-boot:1.3.3 java:1.8

对于解决方案,我尝试了

  1. 增加堆大小。

    • 我将jvm堆内存增加了5GB。但是用于连接的堆内存只有2GB。因此,我认为它与JVM内存无关。
    • 我在application.porperties中设置了server.tomcat.max-thread = 20000。

    • 但是失败了,以前没什么区别。

我对这个问题很好奇。如果你们知道这个问题并且有想法,请告诉我原因。谢谢。


阅读 262

收藏
2020-05-30

共1个答案

小编典典

Tomcat-
maxThreads与maxConnections

尝试将maxConnections属性设置为大于10000。

文档

服务器在任何给定时间将接受和处理的最大连接数。达到此数目后,服务器将接受但不处理另一个连接。在处理的连接数降至maxConnections以下之前,该附加连接将被阻止,此时服务器将再次开始接受和处理新的连接。请注意,一旦达到限制,操作系统仍然可以基于acceptCount设置接受连接。默认值因连接器类型而异。对于BIO,除非使用执行程序,否则默认值为maxThreads的值,在这种情况下,默认值为执行程序的maxThreads的值。对于NIO,默认值为10000。对于APR
/本机,默认值为8192

请注意,对于Windows上的APR
/本机,配置的值将减小为1024的最大倍,该最大值小于或等于maxConnections。这样做是出于性能原因。如果设置为-1,将禁用maxConnections功能,并且不计算连接数。

2020-05-30