Расчет оптимального размера Executors.newFixedThreadPool(?) в зависимости от характеристик сервера
есть метод для записи данных в БД Postgres
private void saveJdbcBatchCallable(final List<Data> datas) {
final ExecutorService executorService = Executors.newFixedThreadPool(???);
final List<Callable<Void>> callables = subdepoOperationsList.stream().map(sublist ->
(Callable<Void>) () -> {
save(datas);
return null;
}).collect(Collectors.toList());
try {
executorService.invokeAll(callables);
} catch (InterruptedException e) {
log.error("Error during prepare data: {}", e.getMessage());
Thread.currentThread().interrupt();
}
}
записывается порядка 20 млн строк. я поставил Executors.newFixedThreadPool(100) и результат - около 30 минут. можно ли расчитывать оптимальный размер пула в зависимости от параметров сервера, где работает микросервис? и от размера кучи с которым сервис запущен.