我正在使用spring-boot测试服务器。 但是,我在测试过程中遇到了一些问题。
我的考试是 服务器使用多少内存来增加Web套接字会话数(客户端数量)。
1,000个客户端(小于9000个会话)在进行测试时没有任何问题。 但是,当我尝试测试10k连接时,服务器连接几乎达到10,000。(有时创建会话直到9990,有时候9988,9996这样,不是特定限制套接字的数量) 之后,它只是停止创建会话,没有错误只是没有响应。
如果某些客户端超时并释放连接,则等待连接的其他客户端可以获得连接。
'环境' tomcat:8.0.36 spring-boot:1.3.3 java:1.8
对于解决方案,我试过
增加堆大小。
我在application.porperties中设置了server.tomcat.max-thread = 20000。
我对这个问题很好奇。如果你们都知道这个问题并有想法,请告诉我原因。 谢谢。
答案 0 :(得分:8)
Tomcat - maxThreads vs maxConnections
尝试将ListView
属性设置为10000以上。
来自the doc:
服务器在任何给定时间接受和处理的最大连接数。达到此数量后,服务器将接受但不处理另一个连接。此附加连接将被阻止,直到正在处理的连接数低于maxConnections,此时服务器将再次开始接受和处理新连接。请注意,一旦达到限制,操作系统仍可以接受基于acceptCount设置的连接。默认值因连接器类型而异。对于BIO,缺省值是maxThreads的值,除非使用Executor,在这种情况下,缺省值将是执行程序中maxThreads的值。对于NIO,默认值为
maxConnections
。对于APR / native,默认值为10000
。请注意,对于Windows上的APR / native,配置的值将减少到1024的最大倍数,小于或等于maxConnections。这是出于性能原因而完成的。 如果设置为值-1,则禁用maxConnections功能,并且不计算连接。
答案 1 :(得分: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.