server.tomcat.max-threads VS corePoolSize VS spring.datasource.tomcat.max - PullRequest
0 голосов
/ 10 января 2019

У меня есть асинхронное приложение Spring Boot REST, хочу настроить:

  1. Потоки соединений от клиентов (хочу, чтобы REST-запрос шел параллельно)
  2. Номера потоков для методов @Async в моем уровне обслуживания
  3. пул подключений к БД

Просмотр документации и найденных сайтов:

значение corePoolSize = ... VS server.tomcat.max-threads = ... - В чем разница?

spring.datasource.hikari.maximum-pool-size = ... VS spring.datasource.tomcat.max ... = ... - В чем разница?

1 Ответ

0 голосов
/ 10 января 2019

Предполагается, что вы используете Spring Boot 2.1 и не изменили значения по умолчанию (используя Tomcat в качестве встроенного контейнера и Hikari в качестве пула соединений).

Темы обработки запросов Tomcat

Чтобы изменить количество потоков (по умолчанию tomcat уже использует 200, так зачем вам его менять!) Используйте свойства в пространстве имен server.tomcat (они характерны для Tomcat!). Поэтому для управления используйте server.tomcat.max-threads номер обработки запроса.

Чтобы ограничить количество одновременных HTTP-подключений, используйте server.tomcat.max-connections (значение по умолчанию 10000). Это в основном очередь обработки, из которой потоки обработки запросов используют для выбора / кражи работы.

Количество потоков для выполнения задачи

Для управления количеством потоков, используемых по умолчанию, созданным TaskExecutor в Spring Boot 2.1, используйте свойства в пространстве имен spring.task.execution. Поэтому используйте spring.task.execution.pool.max-threads, чтобы установить максимальное количество потоков для @Async. spring.task.execution.pool.core-size контролирует основной (минимальный) размер пула. Увеличение свойства max-threads без ограничения размера очереди до spring.task.execution.pool.queue-capacity не имеет никакого эффекта. Размер очереди по умолчанию не ограничен, и все это не приведет к увеличению числа потоков за пределы core-size.

Свойства пула соединений

Наконец, укажите соединения для вашего пула соединений (по умолчанию для Hikari 10!). Используйте свойства пространства имен spring.datasource и, в частности, свойство для вашего пула соединений (по умолчанию Hikari, поэтому значения в spring.datasource.hikari, spring.datasource.tomcat предназначены для пула соединений Tomcat JDBC, используемого по умолчанию в Spring Boot до 2.0). Поэтому установите spring.datasource.hikari.maximum-pool-size, чтобы управлять максимальным количеством потоков.

Примечание

Они не имеют ничего общего друг с другом, и их также следует путать друг с другом (хотя в справочном руководстве это уже ясно, каждый из них преследует разные цели). См. Приложение A Справочного руководства Spring Boot для списка общих свойств.

...