Tomcat极限性能测试(二)

基础环境

Linux操作系统,128G内存,40核心数CPU


测试代码

@RequestMapping(value = "/test/tomcat", method = RequestMethod.GET)
    @ResponseBody
    public void testTomcat() {
          
   
        int j = 0;
        for (int i = 0; i < 2000; i++) {
          
   
            j = j + i;
        }
    }

tomcat配置

tomcat默认配置


测试

测试1:
开启线程数 开启连接数 测试数量[W] QPS[S] CPU使用率[%] 1 1 10 3800 100

CPU使用率: JVM线程情况: 从JVM线程情况中,我们可以发现,Tomcat默认启动10个线程。由于客户端只开启了一个线程,途中绿色部分标识线程的运行状态。我们从中可以发现,绿色部分在10个线程中是交替出现的。


测试2:
开启线程数 开启连接数 测试数量[W] QPS[S] CPU使用率[%] 2 2 80 6662 210

CPU使用率:

JVM线程情况: 从JVM的线程状态中,我们发现同一时刻有2个线程处于运行状态。因为我们开启了两个客户端连接请求


测试3:
开启线程数 开启连接数 测试数量[W] QPS[S] CPU使用率[%] 4 4 160 22862 394

CPU使用率:

JVM线程情况:

从JVM的线程状态中,我们发现同一时刻有4个线程处于运行状态


测试4:
开启线程数 开启连接数 测试数量[W] QPS[S] CPU使用率[%] 8 8 320 42122 744

CPU使用率:

JVM线程情况:

从JVM的线程状态中,我们发现同一时刻有8个线程处于运行状态


测试5:
开启线程数 开启连接数 测试数量[W] QPS[S] CPU使用率[%] 16 16 640 69684 1445

CPU使用率:

JVM线程情况:

从JVM的线程状态中,我们发现同一时刻有16个线程处于运行状态


测试6:
开启线程数 开启连接数 测试数量[W] QPS[S] CPU使用率[%] 32 32 1280 88159 1714

CPU使用率:

JVM线程情况: 当线程数开到了32个的时候,我们发现JVM中有大量线程处于空闲时间,CPU没有用满。 经过研究发现,Tomcat内部使用的阻塞队列的性能瓶颈所致

总结

tomcat的性能随着线程数的增加而增加,当QPS达到10w左右的时候,其内部的处理队列性能存在瓶颈,在压测,QPS已经上不去了。所以我们在开发的时候,基本上不用担心Tomcat的性能问题。在硬件资源充足的情况下,tomcat基本上满足服务。如果一个不够,就在来一个

经验分享 程序员 微信小程序 职场和发展