HikariCP 3.1.0을 사용하고 있다.
백그라운드 처리가 필요해서 별도의 스레드로 느리게 처리되는 곳에서 JPA작업을 하고 있었다.
그런데 아래와 같은 WARN 로그가 보였다.
결과부터 이야기하면 커넥션이 회수가 안되어 누수(leak)이 감지되었다는 것이다.
2018-12-04 17:55:51.378 WARN 14050 --- [ool housekeeper] com.zaxxer.hikari.pool.ProxyLeakTask [] : Connection leak detection triggered for org.mariadb.jdbc.MariaDbConnection@4ebeb6b9 on thread Thread-19, stack trace follows
그런데 신기하게도 백그라운드 스레드가 끝나는 로그 이후에 이전에 커넥션 누수로 알려진 것이 회수가 되었다는 오탐 로그가 찍혔다.
2018-12-04 17:55:59.744 INFO 14050 --- [ Thread-19] com.zaxxer.hikari.pool.ProxyLeakTask [] : Previously reported leaked connection org.mariadb.jdbc.MariaDbConnection@4ebeb6b9 on thread Thread-19 was returned to the pool (unleaked)
찾아보니 JPA에서 findOne 같은 동작은 실제 누수로 판단하는 기준 시간(threshold)가 너무 짧게 되어 있어서 누수로 오탐을 한다는 것이다. 이 문제는 2.6.0로 업데이트 하면 해결이 된다고 한다. 이미 3.1 버전인데???
'Programing > OpenSource' 카테고리의 다른 글
[springfox] swagger-ui 화면 로딩시 404 에러 (0) | 2018.12.19 |
---|---|
[Spring Data Redis] Pipelining 에서 ClassCastException 발생 (0) | 2018.12.07 |
HikariPool - Thread starvation or clock leap detected 메세지 (0) | 2018.11.28 |
Redis Cheet Sheet (0) | 2018.11.26 |
[Gradle] build.gradle - Repository that could not be found (0) | 2018.11.20 |