기타내용

HikariCP

k9e4h 2020. 3. 17. 13:13

 

- 커넥션 풀을 너무 크게 해놓으면 당연히 메모리 소모가 클것이고, 적게 해놓으면 커넥션이 많이 발생할 경우 대기시간이 발생할 것이다. 즉 웹 사이트 동시 접속자수 등 서버 부하에 따라 크기를 조정해야 할것이다.

- HikariCP설정의 시간 단위는 ms

autoCommit

auto-commit설정 (default: true)

connectionTimeout

pool에서 커넥션을 얻어오기전까지 기다리는 최대 시간, 허용가능한 wait time을 초과하면 SQLException을 던짐.
설정가능한 가장 작은 시간은 250ms (default: 30000 (30s))

idleTimeout

pool에 일을 안하는 커넥션을 유지하는 시간. 이 옵션은 minimumIdle이 maximumPoolSize보다 작게 설정되어 있을 때만 설정. pool에서 유지하는 최소 커넥션 수는 minimumIdle (A connection will never be retired as idle before this timeout.). 최솟값은 10000ms (default: 600000 (10minutes))

maxLifetime

커넥션 풀에서 살아있을 수 있는 커넥션의 최대 수명시간.
사용중인 커넥션은 maxLifetime에 상관없이 제거되지않음. 사용중이지 않을 때만 제거됨. 풀 전체가아닌 커넥션 별로 적용이되는데 그 이유는 풀에서 대량으로 커넥션들이 제거되는 것을 방지하기 위함임. 강력하게 설정해야하는 설정 값으로 데이터베이스나 인프라의 적용된 connection time limit보다 작아야함.
0으로 설정하면 infinite lifetime이 적용됨(idleTimeout설정 값에 따라 적용 idleTimeout값이 설정되어 있을 경우 0으로 설정해도 무한 lifetime 적용 안됨). (default: 1800000 (30minutes))
요청했을때 대기 상태에서 빨리주기 위해서 사용

connectionTestQuery JDBC4 드라이버를 지원한다면 이 옵션은 설정하지 않는 것을 추천. 이 옵션은 JDBC4를 지원안하는 드라이버를 위한 옵션임(Connection.isValid() API.) 커넥션 pool에서 커넥션을 획득하기전에 살아있는 커넥션인지 확인하기 위해 valid 쿼리를 던지는데 사용되는 쿼리 (보통 SELECT 1 로 설정) JDBC4드라이버를 지원하지않는 환경에서 이 값을 설정하지 않는다면 error레벨 로그를 뱉어냄.(default: none)
minimumIdle

아무런 일을 하지않아도 적어도 이 옵션에 설정 값 size로 커넥션들을 유지해주는 설정. 최적의 성능과 응답성을 요구한다면 이 값은 설정하지 않는게 좋음. default값을 보면 이해할 수있음. (default: same as maximumPoolSize)

maximumPoolSize pool에 유지시킬 수 있는 최대 커넥션 수. pool의 커넥션 수가 옵션 값에 도달하게 되면 idle인 상태는 존재하지 않음.(default: 10)
poolName

이 옵션은 사용자가 pool의 이름을 지정함. 로깅이나 JMX management console에 표시되는 이름.(default: auto-generated)

initializationFailTimeout 이 옵션은 pool에서 커넥션을 초기화할 때 성공적으로 수행할 수 없을 경우 빠르게 실패하도록 해준다. 상세 내용은 한국말보다 원문이 더 직관적이라 생각되어 다음 글을 인용함.
   

 

 

hikariCP Pool 동작 방식

https://jaehun2841.github.io/2020/01/27/2020-01-27-hikaricp-maximum-pool-size-tuning/#hikaricp%EC%97%90%EC%84%9C-dead-lock%EC%9D%B4-%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94-case

 

HikariCP Maximum Pool Size 설정 시, 고려해야할 부분 | Carrey`s 기술블로그

이 글의 예상 독자 아래와 같은 에러의 원인을 찾아헤멘 개발자 o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: null o.h.engine.jdbc.spi.SqlExceptionHelper : hikari-pool-1 - Connection is not available, request timed out after 30000ms. unable to obtain isolated JDBC c

jaehun2841.github.io

 

jaehun2841.github.io/2020/01/27/2020-01-27-hikaricp-maximum-pool-size-tuning/#hikari%EB%8B%98-connection-%ED%95%98%EB%82%98%EB%A7%8C-%EC%A3%BC%EC%84%B8%EC%97%AC

 

HikariCP Maximum Pool Size 설정 시, 고려해야할 부분 | Carrey`s 기술블로그

이 글의 예상 독자 아래와 같은 에러의 원인을 찾아헤멘 개발자 o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: null o.h.engine.jdbc.spi.SqlExceptionHelper : hikari-pool-1 - Connection is not available, request timed o

jaehun2841.github.io

 


출처

- https://devbox.tistory.com/entry/JSP-커넥션-풀-1

- https://effectivesquid.tistory.com/entry/HikariCP-%EC%84%B8%ED%8C%85%EC%8B%9C-%EC%98%B5%EC%85%98-%EC%84%A4%EB%AA%85

반응형

'기타내용' 카테고리의 다른 글

method annotated with @bean is called directly. use dependency injection instead  (0) 2021.01.26
[소나큐브] Cognitive Complexity of methods should not be too high  (0) 2020.12.29
DNS 8.8.8.8  (0) 2020.02.26
OAuth 2.0  (0) 2020.02.18
RabbitMQ  (0) 2020.01.05