목차

문제 상황


테스트 환경

시도해본 것


메서드 단위 별로 @Transactional 로 묶어주기

특정 커넥션 풀에만 PendingThread가 과하게 몰리는 현상이 발생함을 확인

AOP를 이용한 병목지점 탐색

@Slf4j
@Aspect
@Component
public class TimeTraceAop {
    @Around("within(com.mrblue.home.*..*) && !this(com.mrblue.home.common.EnvironmentRepository)")
    public Object timeLog(ProceedingJoinPoint joinPoint) throws Throwable {
        long start = System.currentTimeMillis();
        log.info("START: %s".formatted(joinPoint));
        try {
            return joinPoint.proceed();
        } finally {
            long finish = System.currentTimeMillis();
            long timeMs = finish - start;
            log.info("END: %s %dms".formatted(joinPoint, timeMs));
        }
    }
}