Рубрики
Без рубрики

Настройка пулов потоков для веб-серверов Java

Узнайте, как настроить пулы потоков на разных серверах веб-приложений java

Автор оригинала: Kyle Doyle.

1. введение

В этом руководстве мы рассмотрим конфигурацию пула потоков для серверов веб-приложений Java, таких как Apache Tomcat, сервер Glassfish и Oracle Weblogic.

2. Пулы потоков Сервера

Пулы потоков сервера используются и управляются сервером веб-приложений для развернутого приложения. Эти пулы потоков существуют за пределами веб-контейнера или сервлета, поэтому они не подпадают под одну и ту же границу контекста.

В отличие от потоков приложений, потоки сервера существуют даже после остановки развернутого приложения.

3. Apache Tomcat

Во-первых, мы можем настроить пул потоков сервера Tomcat с помощью класса конфигурации Исполнитель в нашем server.xml :

MinSpareThreads – это самый маленький пул, который будет, в том числе при запуске. maxThreads – это самый большой пул, который будет до того, как сервер начнет ставить запросы в очередь.

Tomcat по умолчанию принимает значения 25 и 200 соответственно. В этой конфигурации мы сделали пул потоков немного меньше, чем по умолчанию.

3.1. Встроенный Кот

Аналогично, мы можем изменить встроенный сервер Tomcat для Spring Boot для настройки пула потоков, установив свойство приложения:

server.tomcat.max-threads=250

Начиная с загрузки 2.3, свойство изменилось на:

server.tomcat.threads.max=250

4. Стеклянная рыба

Далее, давайте обновим наш сервер Glassfish.

Glassfish использует команду администратора в отличие от XML-файла конфигурации Tomcat, server.xml. Из командной строки мы запускаем:

create-threadpool

Мы можем добавить в create-threadpool флаги maxthreadpoolsize и minthreadpoolsize. Они функционируют аналогично Tomcat MinSpareThreads и maxThreads :

--maxthreadpoolsize 250 --minthreadpoolsize 25

Мы также можем указать, как долго поток может простаивать, прежде чем вернуться в пул:

--idletimeout=2

А затем мы указываем имя нашего пула потоков в конце:

asadmin> create-threadpool --maxthreadpoolsize 250 --minthreadpoolsize 25 --idletimeout=2 threadpool-1

5. Веб-блог

Oracle Weblogic предоставляет нам возможность изменять пул самонастраивающихся потоков с помощью рабочего менеджера.

Подобно очередям потоков, менеджер работ управляет пулом потоков как очередью. Однако Менеджер работ добавляет динамические потоки на основе пропускной способности в реальном времени. Weblogic регулярно проводит анализ пропускной способности для оптимизации использования потоков.

Что это значит для нас? Это означает, что, хотя мы можем изменить пул потоков, веб-сервер в конечном итоге примет решение о том, следует ли создавать новые потоки.

Мы можем настроить наш пул потоков в консоли администратора Weblogic:

Обновление значений Минимальный размер пула потоков с самонастройкой и Максимальный размер пула потоков с самонастройкой устанавливает минимальные и максимальные границы для рабочих.

Обратите внимание на значения Максимальное время застрявшего потока и Интервал таймера застрявшего потока . Это помогает рабочему менеджеру классифицировать застрявшие потоки.

Иногда длительный процесс может привести к накоплению застрявших потоков. Менеджер работ создаст новые потоки из пула потоков для компенсации. Любое обновление этих значений может продлить время, необходимое для завершения процесса.

Застрявшие потоки могут указывать на проблемы с кодом, поэтому всегда лучше устранять первопричину, а не использовать обходной путь.

6. Заключение

В этой краткой статье мы рассмотрели несколько способов настройки пулов потоков сервера приложений.

Хотя существуют различия в том, как серверы приложений управляют различными пулами потоков, они настроены с использованием схожих концепций.

Наконец, давайте помнить, что изменение значений конфигурации для веб-серверов не является подходящим исправлением для низкоэффективного кода и плохого дизайна приложений.