tomcat可支持的最大并发数
tomcat可支持的最大并发数
这个数字实际上是很难有个准确的值,因为其与硬件配置、应用质量都有很大的关系。
有人使用loadrunner设置1000并发用户数进行压力测试。
每两秒钟增加一个用户,以此递增,直至1000后,然后再按照两秒钟一个用户递减直至用户数位0进行了测试。
测试结果如下:
Transaction Response Time Under Load
可以看到在达到600用户同时在线的时候,系统响应时间为6秒钟
100人-----响应时间0.8秒 完美
150人-----响应时间1秒 完美
200人-----响应时间1.5秒 响应时间有微小波动 比较完美
250人-----响应时间1.8秒 比较完美(此时是理想情况下最大的并发用户数量)
280人-----开始出现连接丢失问题,连接开始不稳定
300人-----响应时间3秒 响应时间有较大波动峰值为6秒 较差
350人-----响应时间3秒 开始大量出现连接丢失问题 连接很不稳定
400人-----响应时间3.8秒 连接丢失数量达到3000次以上
450人-----响应时间4秒 连接丢失数量达到6000次以上
500人-----响应时间4秒 连接丢失数量达到11000次以上
550人-----响应时间6秒 连接丢失数量达到21000次以上
600人-----响应时间6秒 连接丢失数量达到25000次以上
600人开始系统出现异常情况,因此停止测试。测试数据到此为止。
从上面的结果看能够完美支持250并发。
但是我想说明的是,这里的测试只是一个最简单的jsp页面没有涉及任何数据访问。不停的重复相同的内容,缓存会对其进行很好的加速。
另外,操作系统对于进程中的线程数有一定的限制:
Windows 每个进程中的线程数不允许超过 2000
Linux 每个进程中的线程数不允许超过 1000
另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。
而分配给 JVM 的内存越多性能也就越高,但也会加重GC的负担。
同时我们还要考虑到需要进行数据操作如:查询数据库、写入数据库产生时间延迟而使整个响应周期变长而导致的性能下降。这就和应用质量有很大关系了。
综合来说个人觉得250是属于非常理想的状态,能达到100就很强了。我相信稳定更重要,如果达到150,咱们有什么理由不做一个集群呢?
所以我推荐将tomcat并发数控制在100以内吧!