inflearn logo
강의

Course

Instructor

MySQL learned from a Toss developer who processes over 500 billion pieces of financial data

HikariCP maxLifetime 가 db 부하에 주는 영향

Resolved

90

jineonyoon2159

8 asked

0

안녕하세요

HikariCP maxLifetime 에 궁금한게 있어서 질문드려요,

mysql 에 직접적인 질문은 아닌 것 같지만 혹시 답변을 받을 수 있을까해서요

 

아래 같은 상황에서 HikariCP maxLifetime 이 connection pool 부족과 직접적인 연관이 있을 가능성이 있는지 궁금합니다.

상황

mysql jetbrains mysql-query

Answer 2

0

Hong

안녕하세요 부릉부릉님 질문 주셔서 감사합니다.

개인적인 생각으로는 연관이 되어 있을꺼같아요.

 

maxLifeTime이 결국 커넥션이 풀에서 살아 있을 수 있는 최대 시간을 의미하게 되는데, 이 시간이 지나게 된다면, 새로운 커넥션을 만들어서 교체하는 작업이 일어나게 될 겁니다.

 

현재 상황을 예시로 들어보자면 30초로 설정이 되어 있다니, 풀 안의 모든 커넥션이 30초마다 교체가 되는 것이죠 또한 pod당 50개씩 구성이 되어 있으니 총 커넥션은 250개가 되겠네요.

 

이 상황에서 250개의 커넥션이 30초 주기마다 대량으로 폐기 되기 떄문에 안정된 커넥션 풀이라기보다는 일종의 팩토리같은 같은 상태가 되는게 아닐까 싶습니다.

 

커넥션을 재연결하는 과정도 결국 DB에 대한 요청이고, 애플리케이션에서 이 주기에 대해서 잠시 커넥션 부족 상태가 가능할꺼 같아서 결국 풀에 대한 고갈과 같은 현상이 발생할꺼 같다는 생각이 드네요.

  • 물론 상황마다 일부 다른 부분은 있겠죠

 

그래서 30초라는 주기가 pool 고갈의 원인일 될 가능성이 일부 있지 않을까 싶습니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 부릉부릉님.

HikariCP의 maxLifetime 설정은 커넥션이 풀에서 유지될 수 있는 최대 시간을 설정하는 것으로, 데이터베이스 부하와 연결 부족 문제에 영향을 미칠 수 있습니다.

현재 maxLifetime을 30초로 설정하셨는데 이는 매우 짧은 시간으로, 커넥션이 자주 생성되고 파괴될 수 있습니다. 이런 상황은 커넥션 풀의 고갈을 유발할 수 있으며, 데이터베이스와 HikariCP 사이의 자원 소비를 증가시킬 수 있습니다. 특히, 커넥션 풀의 크기가 50개로 설정되어 있고, 5개의 Pod가 있을 경우, 모든 Pod가 동시에 커넥션을 필요로 한다면 커넥션 풀의 고갈이 잦을 수 있습니다.

HikariCP의 maxLifetime은 일반적으로 DB 서버의 wait_timeout 보다 짧게 설정해야 하지만, 너무 짧게 설정하면 자원 소모가 늘어나고 오히려 자주 연결을 다시 생성하는 상황이 생길 수 있습니다.

관련 내용을 다룬 기존의 답변을 통해 보다 정확한 설정을 이해하고 싶으시다면, 아래의 링크들을 참고해 보시는 게 좋을 것 같습니다:

이러한 자료들은 HikariCP와 관련된 설정을 이해하는 데 도움이 될 것입니다. 커넥션 풀 크기와 maxLifetime의 균형을 맞추는 것이 중요하다는 점을 강조하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

패키지 구분에 대해 궁금한게 있습니다

0

7

1

스프링부트 서버 에러나요

0

17

1

코드를 첨부해야하는 이유가 있나요?

0

20

2

간단한 오타 제보입니다.

0

19

1

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

34

2

실제 FK제약조건을 설정하지 않는이유

0

35

2

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

28

2

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

36

2

JPA Repository 질문이 있습니다!

1

33

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

36

1

비동기 스레드풀 분리 이유와 Virtual Thread 전환 시 고려사항

0

35

1

수강기간 연장

0

27

1

Build 관련 문제 (테스트 관련 문제)

0

43

2

칼럼명

0

53

2

프로시저

0

53

2

13강에서 말씀하신 엄청난 쿼리가 어떤 쿼리일까요?

0

64

1

커서 기반 페이징 조건 대상으로 AUTO_INCREMENT vs ULID

0

54

2

도커로 mysql latest(9.5) 이미지 사용시 explain 결과가 다른 부분 해결책

0

75

2

커서기반의 페이징 부분 질문 있습니다.

0

80

2

9강 인덱스 설계 관련 문의

1

98

3

인덱스 및 DB 질문

0

94

2

첫번째 프로시저 명령에서 Account가 생성되지 않습니다

0

88

1

실례합니다만.. 혹시 강의 할인

0

243

1

2번째 더미데이터 생성이 되지 않습니다.

1

117

2