6개의 ApplicationContext가 MySQL max_connections를 초과하는 다이어그램

Spring 통합 테스트의 다중 ApplicationContext로 인한 Too many connections

개별 테스트는 통과, 전체 실행시 Too many connections 발생 여러 기능 브랜치가 개발 브랜치로 머지된 후, 그동안 기능 개발하면서 놓친 실패 테스트들을 점검하기 위해 전체 테스트를 실행했다. Too many connections 에러로그가 발생하면서 통합테스트들 일부가 실패하였다. 로그의 일부는 아래와 같다: Error creating bean with name 'liquibase': Too many connections → Error creating bean with name 'databaseCleanupUtil' → Failed to load ApplicationContext 하지만, 각각 테스트 클래스들을 개별로 실행했을때는 모두 통과했다. 도대체 왜 동일한 코드에서 실행 범위만 다를 뿐인데 결과가 다를까? ...

April 1, 2026 · 7 min · 1411 words · Gukin Han

Virtual Thread로 인한 HikariCP 커넥션 풀 고갈 해결 과정 - 트랜잭션 경계 분리로 타임아웃 제거

Virtual Thread 적용 이후 대량 이벤트 발생시 DB 저장 로직 실패 진행중인 개인 프로젝트에서는 DART 전자공시를 이용한다. 매일 수백 개의 전자공시가 DART 전자공시를 통해 게시되며 이를 수집해서 필터링하고 시장의 반응과 LLM의 감성분석을 집계하는 목표를 갖고 있다. 공시 자료 폴링(Polling)이 중단되었다가 재시작 하는 경우 다량의 공시자료를 조회하고 이벤트를 발행하게 된다. 이때 분석된 결과를 DB에 저장하는 과정에서 이슈가 발생했다. 이 과정의 비즈니스 로직은 아래와 같이 정리할 수 있다. Polling으로 새 공시를 수집한다. 수집된 공시의 제목으로 후속 처리가 필요한지 필터링한다. 후속 처리가 필요하면 NewDisclosureEvent를 발행한다. 이벤트 메시지에 담긴 공시 번호로 공시 문서를 조회한다. 조회된 공시 문서를 LLM에게 넘겨서 감성 분석(Sentiment Analysis)을 실시한다. 분석 결과를 DB에 저장한다. 문제가 발생한 코드는 다음과 같다. ...

March 19, 2026 · 7 min · 1282 words · Gukin Han