[Trouble Shooting] HikariPool-1 - Thread starvation or clock leap detected 해결
문제 상황
Spring Boot 서버를 실행해놓고 다음 날 확인해보니 아래와 같은 로그가 찍혀있었다.
2018-11-28 02:44:21.892 WARN 2135 --- [ool housekeeper] com.zaxxer.hikari.pool.HikariPool : api-dev-conn-pool - Thread starvation or clock leap detected (housekeeper delta=2h28s701ms).
2018-11-28 02:45:46.788 WARN 2135 --- [ool housekeeper] com.zaxxer.hikari.pool.HikariPool : api-dev-conn-pool - Thread starvation or clock leap detected (housekeeper delta=54s902ms).
2018-11-28 02:47:41.700 WARN 2135 --- [ool housekeeper] com.zaxxer.hikari.pool.HikariPool : api-dev-conn-pool - Thread starvation or clock leap detected (housekeeper delta=54s904ms).
2018-11-28 02:49:06.617 WARN 2135 --- [ool housekeeper] com.zaxxer.hikari.pool.HikariPool : api-dev-conn-pool - Thread starvation or clock leap detected (housekeeper delta=54s915ms).
2018-11-28 02:51:01.900 WARN 2135 --- [ool housekeeper] com.zaxxer.hikari.pool.HikariPool : api-dev-conn-pool - Thread starvation or clock leap detected (housekeeper delta=55s269ms).
2018-11-28 02:52:26.821 WARN 2135 --- [ool housekeeper] com.zaxxer.hikari.pool.HikariPool : api-dev-conn-pool - Thread starvation or clock leap detected (housekeeper delta=54s910ms).
2018-11-28 02:54:21.733 WARN 2135 --- [ool housekeeper] com.zaxxer.hikari.pool.HikariPool : api-dev-conn-pool - Thread starvation or clock leap detected (housekeeper delta=54s905ms).
2018-11-28 04:55:20.700 WARN 2135 --- [ool housekeeper] com.zaxxer.hikari.pool.HikariPool : api-dev-conn-pool - Thread starvation or clock leap detected (housekeeper delta=2h28s965ms).
구글링해보니 1. 랩탑 같은 경우 잠들기 모드에 들어가면 발생할 수 있다는 글도 있었고, 2. Connection
이 부족해서 Thread Starvation
상황이 발생한 것이라는 글도 있었다.
정확한 이유는 모르지만 두 번째 상황이라고 가정하고 해결하였다.
HikarilCP에서 제공하는 최적의 Maximum Pool Size를 구하는 공식
pool size = Tn x (Cm - 1) + 1
스프링 프로젝트의 Thread수는 10개이다.
한 Thread가 작업을 하면서 필요로 하는 Connection의 수는 2개이다.
위 공식에 대입하면 우리 프로젝트의 최적 pool size는 10*(2-1)+1로 11개이다.
11개 이상의 Connection을 제공하면 오류가 해결될 것이다.
해결 방법
application.yml
에 아래 코드를 추가하여 Connection
의 수를 늘린다.
spring:
datasource:
hikari:
maximum-pool-size: 20
+) 해당 코드를 추가해도 같은 로그가 찍히는 것을 보니 1번이 이유였던 것 같다.
Ref.
- https://velog.io/@mbsik6082/Thread-starvation-or-clock-leap-detected-Dead-Lock-hikari-%EC%98%A4%EB%A5%98
- https://velog.io/@morningstar/server-bumb
- https://namocom.tistory.com/592
💛 개인 공부 기록용 블로그입니다. 👻