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

Jas*_*son 8 spring tomcat spring-boot spring-websocket

我正在使用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内存无关.
  2. 我在application.porperties中设置了server.tomcat.max-thread = 20000.

    • 但它失败了,之前没有任何区别.

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

Sta*_*avL 8

Tomcat - maxThreads vs maxConnections

尝试将maxConnections属性设置为10000以上.

来自doc:

服务器在任何给定时间接受和处理的最大连接数.达到此数量后,服务器将接受但不处理另一个连接.此附加连接将被阻止,直到正在处理的连接数低于maxConnections,此时服务器将再次开始接受和处理新连接.请注意,一旦达到限制,操作系统仍可以接受基于acceptCount设置的连接.默认值因连接器类型而异.对于BIO,缺省值是maxThreads的值,除非使用Executor,在这种情况下,缺省值将是执行程序中maxThreads的值.对于NIO,默认为10000.对于APR/native,默认为8192.

请注意,对于Windows上的APR/native,配置的值将减小到1024的最大倍数,小于或等于maxConnections.这是出于性能原因而完成的.如果设置为值-1,则禁用maxConnections功能并且不计算连接.


Mon*_*mul 6

有一个spring boot,tomcat max-connection属性,需要在application.properties文件中设置

server.tomcat.max-connections= # Maximum number of connections that the server will accept and process at any given time.
Run Code Online (Sandbox Code Playgroud)