WEB/Backend

[Spring Boot] Thread starvation or clock leap detected : 문제 해결

김쿸후 2024. 6. 21. 15:52

문제 상황

Thread starvation or clock leap detected

이 뜨면서 cpu 상태 99%로 오르다가 뻗어버림

문제 원인

 

Spring Data JPA Transaction Propagation, EntityManager, PersistContext에 관한 고찰

https://velog.io/@mbsik6082/Thread-starvation-or-clock-leap-detected-Dead-Lock-hikari-%EC%98%A4%EB%A5%98이 글을 작성하게 된 이유는 친구와 면접 준비를 하다가 내가 트러블슈팅한

velog.io

https://velog.io/@mbsik6082/Thread-starvation-or-clock-leap-detected-Dead-Lock-hikari-%EC%98%A4%EB%A5%98

 

처리

AsyncConfig 의 maxPool 사이즈 조정

ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
int processors = Runtime.getRuntime().availableProcessors();
log.info("processors count {}",processors);
executor.setThreadNamePrefix("CardAsync-"); // thread 이름 설정
executor.setCorePoolSize(processors); // 기본 스레드 수
executor.setMaxPoolSize(processors*2); // 최대 스레드 개수
executor.setQueueCapacity(20); // 최대 큐 수
executor.setKeepAliveSeconds(60); // maxpool size로 인해 덤으로 더 돌아다니는 튜브는 60초 후에 수거해서 정리
executor.initialize(); // 초기화후 반환
return executor;}

그 외 공부할 것

  • Tranasactional 어노테이션의 부모 자식 관계

Propagation in @Transactional Annotation