V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ebony0319
V2EX  ›  Java

再来一波 jdk21 生产环境项目真实压测数据

  •  1
     
  •   ebony0319 · 2023-12-27 11:09:04 +08:00 · 2508 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先说下结论

    单 pod ,4 核 8G 的情况下,接口压测可以到 6W TPS. 用 JdbcTemplate 查询的数据库。数据表大小 > 20 亿,这里跟索引的大小有关系,正常情况下可以到 1.1 万样子,数据量小的时候可以到 5w(这里我不敢发),sql 走了联合索引,sql 大概是

    select b,status where member_id=1 and b in (11111,22222,3333)
    

    压测图展示

    • 应用 应用压测

    • db db

    在此过程中我遇到的问题

    在开启虚拟线程下,Hikari 表现非常糟糕。 https://github.com/brettwooldridge/HikariCP/issues/2151

    为了解决这个问题,我是将 spring.threads.virtual.enabled=false,并且手动开启 tomat 的来解决的。

    @Bean
     @ConditionalOnProperty(prefix = "server.tomcat.threads.virtual", name = "enabled", havingValue = "true")
    public TomcatProtocolHandlerCustomizer<?> protocolHandlerVirtualThreadExecutorCustomizer() throws LifecycleException {
            StandardVirtualThreadExecutor standardVirtualThreadExecutor = new StandardVirtualThreadExecutor();
            standardVirtualThreadExecutor.start();
            return protocolHandler -> protocolHandler.setExecutor(standardVirtualThreadExecutor);
        }
    

    大致情况就是这样,大家有兴趣可以一起交流。

    第 1 条附言  ·  364 天前

    资源占用情况大概是这样,差不太多。有点久了,我当时的截图七零八落的。

    WX20231228-143255@2x

    这是在HikariCP虚拟线程下与非虚拟线程下表现,虚拟线程有点差劲。 ![xxx]https://github.com/brettwooldridge/HikariCP/assets/3062476/2d987251-653c-49a3-bcfa-fd964cb3b03a)

    有一个内存占用情况,但是忘记是哪种情况下的占用了。 xxxx

    16 条回复    2023-12-28 16:40:58 +08:00
    drupal
        1
    drupal  
       2023-12-27 12:46:54 +08:00
    这数据很了不起了
    lsk569937453
        2
    lsk569937453  
       2023-12-27 15:32:26 +08:00
    我压测 4 核 8G 的 nginx ,tps 不到 5w 。配置在这里 https://github.com/lsk569937453/silverwind/blob/main/benchmarks/nginx/docker-compose.yaml

    你 4 核 8G 居然能到 6W 。。。。。
    allblux
        3
    allblux  
       2023-12-27 16:02:17 +08:00
    请问一下这个压测工具是啥
    daiv
        4
    daiv  
       2023-12-27 16:10:08 +08:00
    请问你用了那个画图的库, 谢谢
    ebony0319
        5
    ebony0319  
    OP
       2023-12-27 17:38:29 +08:00
    @allblux 阿里云的 PTS
    ebony0319
        6
    ebony0319  
    OP
       2023-12-27 17:38:52 +08:00
    @daiv 这里阿里云 PTS 的压测报告图。
    ebony0319
        7
    ebony0319  
    OP
       2023-12-27 17:42:58 +08:00
    @lsk569937453 这里跟您的配置与方案有关系,比如长链接,短链接,我们之前单纯压 nginx ,2 核心 2G 就可以达到 4 ,5 万样子了。那个图找不到了。
    ebony0319
        8
    ebony0319  
    OP
       2023-12-27 17:45:33 +08:00
    @lsk569937453 还有一个跟你压测的工具有关系,你有没有足够的机器能对你的压测机器产生足够的压力么。
    ebony0319
        9
    ebony0319  
    OP
       2023-12-27 17:46:30 +08:00
    @ebony0319 长连接,短连接。纠正一下。
    ebony0319
        10
    ebony0319  
    OP
       2023-12-27 17:49:44 +08:00
    @lsk569937453 https://github.com/brettwooldridge/HikariCP/issues/2151 这里有我测试占用的资源情况,差不太多,您可以看下。
    keepRun
        11
    keepRun  
       2023-12-27 22:52:41 +08:00 via Android
    java gc 、内存等监控怎样?
    allblux
        12
    allblux  
       364 天前
    @ebony0319 好的.多谢
    siweipancc
        13
    siweipancc  
       364 天前 via iPhone
    照我之前在 3.2.1 的测试,实际上你这个配置也就没有开虚拟线程池,那如果查询结果返回给前段前随机睡一段时间,tps 真能爬这么高吗?
    ebony0319
        15
    ebony0319  
    OP
       364 天前
    @keepRun 大概如上图,有点久了,我找不到的 gc 情况,应该就是这样。上图应该是压 Hikari 的情况。
    keepRun
        16
    keepRun  
       364 天前
    感觉 jdk21 会成为下一个 jdk8 ,相比之前的版本优势比较大
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1345 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:49 · PVG 07:49 · LAX 15:49 · JFK 18:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.