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

Я хотел знать, сколько одновременных запросов может обработать веб-приложение, созданное с помощью сервлета (с использованием Tomcat 7). Я настроил атрибуты maxThreads, acceptCount, minSpareThreads файла server.xml.

У меня вопрос: Нужно ли нам учитывать и базовую ОС?

Например:

maxThreads= 5;
acceptCount= 1;
OS= 1 processor with 4 cores; 

Значит, одновременно можно обрабатывать максимум 4 запроса с ожиданием 1 запроса? Предполагая, что выполнение каждого запроса займет некоторое время. Мы также должны учитывать гиперпоточность?


person Chris    schedule 15.12.2014    source источник
comment
Вы хотите его установить или оценить? Непонятно, о чем вы спрашиваете.   -  person user207421    schedule 15.12.2014


Ответы (2)


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

У меня возникает несколько вопросов.

1.) Сколько time требуется для обработки каждого запроса.

2.) Сколько потоков используется / настраивается в thread pool.

3.) Сколько server connections было настроено.

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

В файле server.xml вы указываете maxThreads, который указывает максимальное количество одновременных запросов, которые могут быть обработаны. Если не указано, этому атрибуту присваивается значение 200.

Из статистики / блогов

Один сервер Tomcat с настройками по умолчанию на скромном оборудовании должен легко обрабатывать 2 КБ запросов в секунду, при условии, что у него не так много работы для каждого запроса. Если обработка одного запроса занимает 500+ мс, вам, вероятно, потребуется увеличить количество потоков в пуле потоков, и вы можете начать выходить за пределы.

person Ankur Singhal    schedule 15.12.2014

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

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

Также из опыта: база данных является узким местом. Будет пара запросов, которые остановят все. Трудно сказать, какие из них заранее, потому что производительность зависит от очень многих вещей: количества данных в базе данных, индексов, фактического выполняемого SQL, скорости диска, сети между БД и веб-сервером, чтобы назвать только самые важные из них.

person Aaron Digulla    schedule 15.12.2014