Ответ
Да, управлять нагрузкой можно через настройки коннектора в файле conf/server.xml.
Ключевые параметры коннектора (протокол HTTP/1.1 или NIO):
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
maxThreads |
Максимальное число рабочих потоков для обработки запросов. | 200 |
acceptCount |
Размер очереди запросов, когда все потоки maxThreads заняты. |
100 |
maxConnections |
Максимальное число одновременных соединений. Для HTTP/1.1 обычно равно maxThreads. |
Для NIO: 10000 |
Пример конфигурации в server.xml:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="500"
acceptCount="100"
maxConnections="500" />
Как это работает:
- Новые запросы обрабатываются свободными потоками (до
maxThreads). - Если потоки заняты, запросы помещаются в очередь (до
acceptCount). - При заполненной очереди новые соединения будут отклонены.
Для продвинутого контроля (например, rate limiting) потребуется:
- Фронтенд-прокси (Nginx, Apache HTTP Server).
- Кастомный
Filterв приложении для подсчета запросов. - Специализированные инструменты (например, Resilience4j).