Модель потоков Tomcat

Любопытно узнать максимальное количество одновременных запросов, которое может выполнить мое приложение, развернутое на tomcat.

Что я знаю:

В конфигурации tomcat есть несколько параметров, которые помогут мне в этом, например:

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

  2. MaxConnections - максимальное количество подключений, которые сервер будет принимать и обрабатывать в любой момент времени. Когда это число будет достигнуто, сервер примет, но не обработает еще одно соединение.

Что хотелось бы знать:

  1. Достаточно ли перечисленных выше параметров, чтобы узнать максимальное количество «одновременных» запросов, которые может обработать мое приложение?

  2. Допустим, максимальное количество подключений равно 200, тогда это означает, что будет создано 200 потоков (по 1 для каждого запроса), если поступит 200 одновременных запросов. Тогда, скажем, все это запросы / операции, интенсивно использующие ЦП. Так разве создание 200 потоков не снижает производительность? Я считал, что если запросы / операции интенсивно загружают процессор, то максимальное количество потоков, порожденных JVM, должно дополнять количество ядер. (скажем, 16).

Прочтите это stackoverflow.com/questions/6402681/…

Vishwa Ratna 15.01.2019 16:46

а. Я уже прочитал ссылку, которую вы упомянули и указали в разделе, который я знаю в моем вопросе. б. Эта платформа предназначена только для вопросов по кодированию? Давай! :)

Ankit Singodia 15.01.2019 16:57

Ваш ответ удачный! Спасибо за это @GhostCat. Очень признателен!

Ankit Singodia 16.01.2019 15:54

Итак, ваше быстрое возвращение!

GhostCat 16.01.2019 15:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
139
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Curious to find the maximum number of concurrent requests that can be fulfilled by my app deployed on tomcat.

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

  • мощность оборудования (сколько процессоров, какой процессор, сколько памяти)
  • фактические характеристики вашей рабочей нагрузки

Другими словами: на ваш вопрос не может быть общего / универсального ответа. Если вы действительно беспокоитесь о точных деталях, то эксперименты - единственный выход.

Рабочая нагрузка «смешанного типа», выполняемая на мощном современном сервере, должна иметь возможность без труда обрабатывать 200 потоков параллельно. Но, конечно, если каждый запрос вызывает миллионы операций ввода-вывода в секунду или требует 1 часа реального времени ЦП, то 10 параллельных запросов могут вас вывести из строя.

Другие вопросы по теме