单 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
在开启虚拟线程下,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); }
大致情况就是这样,大家有兴趣可以一起交流。
资源占用情况大概是这样,差不太多。有点久了,我当时的截图七零八落的。
这是在HikariCP虚拟线程下与非虚拟线程下表现,虚拟线程有点差劲。 ![xxx]https://github.com/brettwooldridge/HikariCP/assets/3062476/2d987251-653c-49a3-bcfa-fd964cb3b03a)
有一个内存占用情况,但是忘记是哪种情况下的占用了。
![]() | 1 drupal 2023-12-27 12:46:54 +08:00 这数据很了不起了 |
![]() | 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 。。。。。 |
3 allblux 2023-12-27 16:02:17 +08:00 请问一下这个压测工具是啥 |
![]() | 4 daiv 2023-12-27 16:10:08 +08:00 请问你用了那个画图的库, 谢谢 |
![]() | 7 ebony0319 OP @lsk569937453 这里跟您的配置与方案有关系,比如长链接,短链接,我们之前单纯压 nginx ,2 核心 2G 就可以达到 4 ,5 万样子了。那个图找不到了。 |
![]() | 8 ebony0319 OP @lsk569937453 还有一个跟你压测的工具有关系,你有没有足够的机器能对你的压测机器产生足够的压力么。 |
![]() | 10 ebony0319 OP @lsk569937453 https://github.com/brettwooldridge/HikariCP/issues/2151 这里有我测试占用的资源情况,差不太多,您可以看下。 |
11 keepRun 2023-12-27 22:52:41 +08:00 via Android java gc 、内存等监控怎样? |
![]() | 13 siweipancc 2023-12-28 10:01:46 +08:00 via iPhone 照我之前在 3.2.1 的测试,实际上你这个配置也就没有开虚拟线程池,那如果查询结果返回给前段前随机睡一段时间,tps 真能爬这么高吗? |
![]() | 14 ebony0319 OP @keepRun  |
![]() | 15 ebony0319 OP @keepRun 大概如上图,有点久了,我找不到的 gc 情况,应该就是这样。上图应该是压 Hikari 的情况。 |
16 keepRun 2023-12-28 16:40:58 +08:00 感觉 jdk21 会成为下一个 jdk8 ,相比之前的版本优势比较大 |