org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor вызывает сбой приложения Spring-Boot - PullRequest
0 голосов
/ 03 октября 2019

В настоящее время у нас есть запланированное задание, которое выполняется каждые 15 минут. Нам нужно запустить около 100 потоков. Каждая нить может занять от 1 до 60 минут. Максимальный размер кучи, установленный для этого приложения, составляет 2 г. Я пытался настроить параметры ThreadPoolTaskExecutor для получения оптимальной производительности, но, к сожалению, приложение продолжает падать, поскольку размер кучи продолжает увеличиваться, пока не достигнет 2g. Ниже приведена конфигурация для AsyncConfigurer

@EnableAsync
@Configuration
public class AsyncConfig implements AsyncConfigurer {

@Bean(name = "threadPoolTaskExecutor")
public Executor threadPoolTaskExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(50);
    executor.setMaxPoolSize(50);
    executor.setQueueCapacity(Integer.MAX_VALUE);
    executor.setThreadNamePrefix("TaskExecutor-");
    executor.initialize();
    return executor;
}

. Я понимаю, что значение corePoolSize - это количество выполняемых потоков, а установка maxPoolSize на 50 - это то, что я пытался ограничить для приложения. Меня не волнует объем очереди, потому что это фоновый сервис.

Основной вопрос: что является причиной сбоя приложения? Такое ощущение, что созданные потоки никогда не проясняются после завершения работы. Не уверен, какой будет оптимальная конфигурация для моего сценария или если я пропущу что-то еще.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...