单 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 359 天前
这数据很了不起了
|
2
lsk569937453 359 天前
我压测 4 核 8G 的 nginx ,tps 不到 5w 。配置在这里 https://github.com/lsk569937453/silverwind/blob/main/benchmarks/nginx/docker-compose.yaml 。
你 4 核 8G 居然能到 6W 。。。。。 |
3
allblux 359 天前
请问一下这个压测工具是啥
|
4
daiv 359 天前
请问你用了那个画图的库, 谢谢
|
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 358 天前 via Android
java gc 、内存等监控怎样?
|
13
siweipancc 358 天前 via iPhone
照我之前在 3.2.1 的测试,实际上你这个配置也就没有开虚拟线程池,那如果查询结果返回给前段前随机睡一段时间,tps 真能爬这么高吗?
|
14
ebony0319 OP @keepRun ![WX20231228-143255@2x]( https://github.com/brettwooldridge/HikariCP/assets/3062476/940b1633-2d8b-41b5-b887-262bfd703c82)
|
16
keepRun 358 天前
感觉 jdk21 会成为下一个 jdk8 ,相比之前的版本优势比较大
|