Партии разделительной пружины не выполняются вместе - PullRequest
0 голосов
/ 14 апреля 2020

У нас есть весеннее пакетное задание для чтения XML файлов и вставки в БД. Каждый пакетный подчиненный раздел принимает 10000 XML и выполняет запись в БД.

Ниже приведена конфигурация пула потоков

@Bean
public ThreadPoolTaskExecutor taskExecutor() {
    ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
    taskExecutor.setMaxPoolSize(80);
    taskExecutor.setCorePoolSize(50);
    taskExecutor.setQueueCapacity(30);
    taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
    taskExecutor.afterPropertiesSet();
    return taskExecutor;
}

Мы разбиваем на 30 блоков и фиксируем по 100 для каждого потоки. Все 30 потоков вставляются в таблицу, BATCH_STEP_EXECUTION говорит, что запуск. Немного завершается за считанные секунды с таким же количеством записей, другие ожидают от 3 до 7 минут. Конфигурация приложения - 6 ГБ памяти и Linux 64 бит с 96 процессорами.

Архитектура конфигурации сервера: x86_64 Операционные режимы процессора: 32-разрядный, 64-разрядный Порядок байтов: Процессоры с прямым порядком байтов: 96 Список оперативных процессоров: 0-95 Поток на ядро: 2 ядра на сокет: 24 Сокетов: 2 NUMA узла: 2 Идентификатор поставщика: Семейство процессоров GenuineIntel: 6 Модель: 85 Название модели: Intel (R) Xeon (R) Процессор Platinum 8160M @ 2,10 ГГц Степпинг: 4

See the attached last threads are waiting

...