将 HikariCP 与 Mysql 结合使用:谁应该实现线程池

问题描述 投票:0回答:1

我正在使用 HikariCP 运行 Java 应用程序的 2 个实例,每个实例的最大池大小为 30。它们连接到一个 MariaDB 数据库,该数据库也设置了

thread_handling         = pool-of-threads
。当有大量同步数据库读取时,我从 Hikari 收到一些连接超时。

2024-03-20 00:09:17.551, qtp1047503754-22 , [DEBUG] Get team query time, 8ms
2024-03-20 00:09:18.432, pool-3-thread-3 , [DEBUG] Get team query time, 5ms
2024-03-20 00:09:52.305, qtp1047503754-29 , [DEBUG] Get team query time, 6ms
2024-03-20 00:09:56.720, qtp1047503754-27 , [DEBUG] Get team query time, 5ms
2024-03-20 00:10:00.232, qtp1047503754-24 , [DEBUG] Get team query time, 4ms
2024-03-20 00:10:01.329, pool-3-thread-4 , [DEBUG] Get team query time, 4ms
2024-03-20 00:10:04.553, qtp1047503754-25 , [DEBUG] Get team query time, 4ms
2024-03-20 00:10:05.787, pool-3-thread-3 , [DEBUG] Get team query time, 6ms
2024-03-20 00:10:06.353, pool-3-thread-4 , [DEBUG] Get team query time, 3ms
2024-03-20 00:10:14.178, qtp1047503754-22 , [DEBUG] Get team query time, 293ms
2024-03-20 00:10:14.184, qtp1047503754-27 , [DEBUG] Get team query time, 953ms
2024-03-20 00:10:14.185, qtp1047503754-29 , [DEBUG] Get team query time, 739ms
2024-03-20 00:10:14.197, qtp1047503754-24 , [DEBUG] Get team query time, 523ms
2024-03-20 00:10:14.201, qtp1047503754-28 , [DEBUG] Get team query time, 92ms
2024-03-20 00:10:15.414, qtp1047503754-25 , [DEBUG] Get team query time, 861ms
2024-03-20 00:10:15.425, qtp1047503754-167 , [DEBUG] Get team query time, 417ms
2024-03-20 00:10:16.177, qtp1047503754-26 , [DEBUG] Get team query time, 1838ms

查询时间不断增加,最终HikariCP在30秒超时。请求计数恢复正常后,查询时间恢复正常。对于上下文:我只是从一个简单的表中读取一行,主键上有一个 WHERE。

我应该让 HikariCP 处理连接池并将 Mariadb 线程处理设置为每个连接线程还是我必须匹配池的大小?

java mysql mariadb jersey hikaricp
1个回答
0
投票

如果您必须同时使用超过 30 个连接,而连接池中只有 30 个连接,则会遇到问题。只需增加该数字即可。 同样在 MariaDB 服务器端,

thread_pool_max_threads
。它可以设置为数百甚至数千,它实际上不会对性能产生太大影响。

© www.soinside.com 2019 - 2024. All rights reserved.