我正在用弹簧引导测试服务器。然而,我在做测试时遇到了一些问题。
我的测试是,随着web套接字会话的增加,服务器使用了多少内存(客户机的数量)。
1000个客户端(少于9000次会话)在进行测试时没有问题。但是,当我尝试测试10k连接时,服务器几乎一直连接到10,000。(有时创建会话直到9990,有时是9988,9996像这样,而不是具体限制套接字的数量)之后,它只是停止创建会话,没有错误,只是没有响应。
如果某些客户端超时并释放连接,则等待连接的其他客户端能够获得连接。
'environment‘tomcat : 8.0.36 spring-boot : 1.3.3 java : 1.8
为了解决问题,我试过
- I increase jvm heap memory by 5GB. but heap memories which are used for connections are only 2GB. So, I think that it is not related to JVM memory.
- but it was failed, no difference before.
我对这个问题真的很好奇。如果你们知道这个问题并有想法,告诉我原因。谢谢。
发布于 2017-02-14 07:36:24
Tomcat - maxThreads对maxConnections
尝试将maxConnections属性设置为大于10000。
来自医生
服务器将在任何给定时间接受和处理的最大连接数。达到此数字后,服务器将接受另一个连接,但不接受处理。此附加连接将被阻塞,直到正在处理的连接数量降到maxConnections以下,此时服务器将再次开始接受和处理新连接。注意,一旦达到了限制,操作系统仍然可以接受基于acceptCount设置的连接。默认值随连接器类型而变化。对于BIO,缺省值是maxThreads的值,除非使用执行器,在这种情况下,默认值将是来自执行器的maxThreads值。对于NIO,默认情况是
10000。对于APR/本机,默认情况是8192。 请注意,对于Windows上的APR/本机,配置的值将降到小于或等于maxConnections的1024的最高倍数。这是出于性能原因。如果设置为-1,则禁用maxConnections功能,不计算连接。
发布于 2017-02-14 08:02:47
spring启动有一个属性tomcat connection,需要在application.properties文件中设置。
server.tomcat.max-connections= # Maximum number of connections that the server will accept and process at any given time.https://stackoverflow.com/questions/42219637
复制相似问题