Tomcat: что происходит, когда количество соединений превышает количество потоков? - PullRequest
1 голос
/ 03 марта 2020

Согласно этой ссылке свойства server.tomcat.max-connections и server.tomcat.max-threads определяют максимальное количество соединений и максимальное количество потоков в приложении.

У меня два вопроса:

  1. Что произойдет, если в определенный момент количество соединений превысит количество потоков? Что произойдет с соединениями, которые не получили поток?

  2. Что произойдет, если сервер должен обслуживать больше запросов, чем server.tomcat.max-connections? Будет ли он просто игнорировать запросы, поступившие после того, как число потоковых соединений достигло своего максимального значения?

1 Ответ

1 голос
/ 03 марта 2020

Что произойдет, если в данный момент количество соединений превысит количество потоков? Что произойдет с соединениями, которые не получили поток?

Они будут ожидать, когда рабочий поток станет доступным.

Tomcat использует «очередь приема» для хранения соединений между принимая их и передавая их в рабочий поток. Управляющий параметр конфигурации Tomcat:

acceptCount: максимальная длина очереди для входящих запросов на подключение, когда используются все возможные потоки обработки запросов. Любые запросы, полученные при заполнении очереди, будут отклонены. Значение по умолчанию: 100.

(Источник https://tomcat.apache.org/tomcat-8.0-doc/config/http.html)


Что произойдет, если сервер должен обслуживать больше запросов, чем server.tomcat.max-connections? Будет ли он просто игнорировать запросы, поступившие после того, как число потоковых соединений достигло своего максимального значения?

В соответствии с вышеизложенным, соединения будут приниматься до предела очереди, а затем отклоняться. Я предполагаю, что клиент получит уровень TCP / IP «Отказано в соединении».

(Не совсем понятно, что происходит с запросом в очереди, если клиент останавливает его и закрывает TCP / IP подключение со стороны клиента.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...