当前位置: 首页 > news >正文

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

1 SSM Jetty

SSM框架

    @RequestMapping(value = "/test", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")@ResponseBodypublic 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重构了~

相关文章:

  • 数据库MySQL学习——day1(创建表与数据类型)
  • Linux开机自动挂载磁盘方法
  • 01.Python代码Pandas是什么?pandas的简介
  • org.springframework.beans.factory.config.YamlPropertiesFactoryBean 类详解
  • StarRocks 异常 Table creation timed out.
  • U535982 J-A 小梦的AB交换 题解
  • 安全调度系统:安全管理的智能中枢
  • 从零学会epoll的使用和原理
  • Function calling, 模态上下文协议(MCP),多步能力协议(MCP) 和 A2A的区别
  • Vue3+TS中svg图标的使用-@unocss/preset-icons
  • 【深度学习】LoRA:低秩适应性微调技术详解
  • 第33周JavaSpringCloud微服务 电商进阶开发
  • VSCode连服务器一直处于Downloading
  • 多骨干、多融合:RT-DETR 如何解锁主干网络新姿势?
  • 面试网络基础知识 — IP地址
  • 聚能芯半导体禾润一级代理HT7886开关限流降压变换器 5V – 100V 的宽输入电压3.5A 开关限流降压变换器
  • USB 共享神器 VirtualHere 局域网内远程使用打印机与扫描仪
  • 丰富多样功能的小白工具,视频提取音频,在线使用,无需下载软件
  • QEMU源码全解析 —— 块设备虚拟化(21)
  • 【Pandas】pandas DataFrame div
  • 高明士︱纪念坚苦卓绝的王寿南先生
  • 三部门:对不裁员少裁员的参保企业实施稳岗返还政策至今年底
  • 哈佛大学就联邦经费遭冻结起诉特朗普政府
  • 京东:自21日起,所有超时20分钟以上的外卖订单全部免单
  • 十大券商看后市|A股下行波动风险有限,震荡中有望逐步抬升
  • 马拉松夺冠机器人将小批量量产:价格与一台入门级小轿车差不多