Lewis's Tech Keep
[Spring Boot][JDK21] virtual threads 이슈 본문
java 21 로 버전업하면서 Spring kafka consumer도 virtual threads 로 사용하고 싶었기에 ListenerContainerFactory 빈을 등록할 때 링크 를 참고해서 AsyncTaskExecutor와 virtualThread 옵션을 활성화 시켜봤다.
그러나 운영 배포 후 rebalancing 이 계속 발생하면서 파드가 떨어지기 시작했다.
왜 그런가 했더니 설정 시
asyncTaskExecutor.setConcurrencyLimit(SimpleAsyncTaskExecutor.UNBOUNDED_CONCURRENCY);
아래와 같이 TaskExecutor ConcurrenyLimit 정책을 UNBOUNDED_CONCURRENCY로 가져갔더니 쓰레드를 무한히 생성하였고 이로 인하여 가용 쓰레드 수가 부족해지게 되었다.
이로 인하여 리밸런싱이 계속 일어나게 되었고 파드가 무한 재시작하게 되었다.
대응
- 일단 운영에서 바로 이슈가 발생했기에 virtual threads 를 적용한 부분은 빠르게 rollback하여 마무리하였다.
- 다시 운영에 배포 할 수 있다면 UNBOUNDED_CONCURRENCY가 아닌 특정 값으로 설정되면 좋을 것 같다.
'Java > Spring' 카테고리의 다른 글
[Ratelimiter] 처리율 제한 장치 (0) | 2024.07.08 |
---|---|
[Spring Boot] Spring Hibernate Envers REV INFO 타입 변경 (0) | 2024.06.27 |
[Spring] h2를 이용한 테스트 시 user 테이블 테스트를 실패했을 때 확인 (1) | 2023.04.25 |
Comments