翻译:
HikariPool-1-检测到线程不足或时钟跳跃。
原因:
-
线程饥饿(Thread Starvation):这是指在连接池中,线程因为某些原因(例如高负载、线程等待时间过长等)无法获得需要的资源(在这里是数据库连接)。这种情况可能导致连接池中的线程无法正常工作,从而影响应用程序的性能。
-
时钟跳跃(Clock Leap):这指的是系统时钟发生了意外的跳跃或改变。这可能是由于操作系统时间的调整或同步问题引起的。这种情况会影响到连接池的内部计时机制,从而导致连接池状态异常。
-
没有引入spring-boot-starter-jdbc依赖,也就不会自动配置连接池。
第一种情况的解释:
HikariCP默认连接数为10,然后我们搞一个50个并发请求,但数据库连接池只能提供 10 个连接,那么多余的请求就会被迫等待。这种情况下,如果所有的连接都被占用,其他请求可能会因为无法获得连接而挂起,这就是线程饥饿的典型情况。
具体情况:
- 高并发场景,每一次请求需要一个数据库连接
- 连接泄露,没有正确释放连接
解决方法:
- 增加最大连接数:根据应用程序的需求和负载情况,适当增加连接池的最大连接数。例如,将最大连接数从 10 增加到 20 或 50。
- 配置连接超时&#x