5
I가 나의 봄 부팅 응용 프로그램에서 다음과 같은 구성 : 나는 그것을 실행할 때 CPU 사용량이 100 %에 도달봄 부팅 응용 프로그램
@Configuration
@EnableAsync
@Slf4j
public class AsyncConfig {
private static final int BUFFER = 1024;
@Bean
public AsyncTaskExecutor singleThreadAsyncTaskExecutor(Environment env) {
RingBufferAsyncTaskExecutor rbAsyncExecutor = new RingBufferAsyncTaskExecutor(env);
rbAsyncExecutor.setName("rb-executor");
rbAsyncExecutor.setBacklog(BUFFER);
rbAsyncExecutor.setProducerType(ProducerType.SINGLE);
rbAsyncExecutor.setWaitStrategy(new YieldingWaitStrategy());
log.info("Async task executor loaded");
return rbAsyncExecutor;
}
}
(때로는 100 일) :
VisualVM과 함께 조사하고,이
참조AsyncTaskExecutor
의 인스턴스를 제거하면 CPU 사용량이 0.4 %로 증가하고 visualvm은 CPU 사용량의 거의 1 %를 차지합니다.
docker로 배포하는 동안이 문제가 발견되어 호스트 사용이 천장에 닿았습니다.
1024로 버퍼 크기를 낮추려고 시도했지만 (2048) 아무 것도 변경되지 않았습니다.
이 bean이 없으면 내 @Async
서비스가 비동기 적으로 작동하지 않습니다. (No TaskExecutor bean found for async processing
)