Java1.8原生http 与SSM Jetty性能对比

发布于:2025-05-01 ⋅ 阅读:(38) ⋅ 点赞:(0)

1 SSM Jetty

SSM框架

    @RequestMapping(value = "/test", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
    @ResponseBody
    public String testCon() throws Exception {
        Thread.sleep(20);
        return "OK";
    }

1.1 线程池线程数:200

ab -n 10000 -c 100 http://127.0.0.1:8080/api/aaa/test

Concurrency Level:      100
Time taken for tests:   13.538 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      1190000 bytes
HTML transferred:       20000 bytes
Requests per second:    738.67 [#/sec] (mean)
Time per request:       135.379 [ms] (mean)
Time per request:       1.354 [ms] (mean, across all concurrent requests)
Transfer rate:          85.84 [Kbytes/sec] received

ab -n 100000 -c 1000 http://127.0.0.1:8080/api/aaa/test

Concurrency Level:      1000
Time taken for tests:   62.260 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      11900000 bytes
HTML transferred:       200000 bytes
Requests per second:    1606.17 [#/sec] (mean)
Time per request:       622.599 [ms] (mean)
Time per request:       0.623 [ms] (mean, across all concurrent requests)
Transfer rate:          186.65 [Kbytes/sec] received

好家伙,不使用框架的时候QPS能达到5k多,使用了框架后只能达到1.6K。那我增加jetty的线程池的线程数试试。

1.2 线程池线程数:1000

    <Set name="minThreads" type="int"><Property name="jetty.threadPool.minThreads" deprecated="threads.min" default="1000"/></Set>
    <Set name="maxThreads" type="int"><Property name="jetty.threadPool.maxThreads" deprecated="threads.max" default="1000"/></Set>

ab -n 20000 -c 200 http://127.0.0.1:8080/api/aaa/test

Concurrency Level:      200
Time taken for tests:   18.481 seconds
Complete requests:      20000
Failed requests:        0
Write errors:           0
Total transferred:      2380000 bytes
HTML transferred:       40000 bytes
Requests per second:    1082.20 [#/sec] (mean)
Time per request:       184.809 [ms] (mean)
Time per request:       0.924 [ms] (mean, across all concurrent requests)
Transfer rate:          125.76 [Kbytes/sec] received

在这里插入图片描述

Concurrency Level:      1000
Time taken for tests:   55.474 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      11900000 bytes
HTML transferred:       200000 bytes
Requests per second:    1802.65 [#/sec] (mean)
Time per request:       554.740 [ms] (mean)
Time per request:       0.555 [ms] (mean, across all concurrent requests)
Transfer rate:          209.49 [Kbytes/sec] received

2 总结

1.go1.20 QPS 4.5k左右
2.nginx QPS 2.5k左右
3.python3.6 QPS 381左右
4.java1.8 QPS 5.2k左右
5.java1.8+ SSM框架+jetty 线程池200线程:1k左右
6.java1.8+ SSM框架+jetty 线程池1000线程:1.8k左右
如此看来,java这太老的SSM框架、以及这种框架使用的线程池模式,对QPS的影响还真的大!虽然本次我没有测试go框架,但是根据我以前测试的经验,go原生和go框架的性能是差不多的,那也就意味着 go框架的性能 是 java ssm框架的性能的3倍了!而且要是如果jetty的线程池的线程开太多,线程的调度和维护还是影响开销~
赶快把go学起来!代码也要准备用go重构了~


网站公告

今日签到

点亮在社区的每一天
去签到