Ben benim Bahar Boot uygulamasında aşağıdaki yapılandırma: Bunu çalıştırdığınızda, cpu kullanımı% 100 vururbahar çizme uygulaması
@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;
}
}
(bazen 100 şey):
visualvm ile soruşturma, ben bu
bkz, ancak, AsyncTaskExecutor
örneğini kaldırdığımda, CPU kullanımı% 0,4'e gider ve visualvm bana CPU kullanımının ancak% 1'ini gösterir.
Docker ile konuşlandırırken bu sorunu buldum, ana bilgisayar kullanımının tavana çarptığını gördüm.
Tampon boyutunu (2048 idi) 1024'e düşürdüm ama hiçbir şey değişmedi.
Bu çekirdek olmadan, @Async
hizmetlerim senkronize olmayan bir şekilde çalışmıyor. (No TaskExecutor bean found for async processing
)