2014-12-15 3 views
3

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

Мой вопрос: Нужно ли брать основную ОС?

Например:

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

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

+0

Вы хотите * установить * его или * оценить * его? Неясно, что вы спрашиваете. – EJP

ответ

1

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

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

1.) Сколько time делает каждый запрос на обработку.

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

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

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

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

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

Один сервер Tomcat с дефо lt на скромном оборудовании должно легко обрабатывать 2k запросов в секунду, если у него не слишком много работы для выполнения запроса. Если обработка одного запроса занимает 500+ мс, , вам, вероятно, потребуется увеличить количество потоков в потоке пула, и вы можете начать нажимать лимиты.

1

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

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

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