Тестирование производительности развернутого приложения сервлета?

В настоящее время у меня есть приложение на основе сервлета, которое извлекает данные из архивной базы данных и отправляет их обратно клиенту в виде XML через HTTP.

Я хочу создать тестовый клиент «X», чтобы протестировать мой сервлет для извлечения из базы данных для следующего:

  • Минимальное время ответа HTTP
  • Максимальное время ответа HTTP
  • Ошибки, полученные от сервера

Приложение находится почти на этапе развертывания разработки, однако мне нужен тестовый клиент, который я могу использовать после его развертывания, чтобы проверить, работает ли приложение должным образом, или если мне нужно выполнить обслуживание в его среде (например, база данных переиндексации), скажем, после 6 месяцы.

Я хочу, чтобы приложение генерировало тысячи HTTP-запросов (спама).

Пока я могу думать о двух способах сделать это:

  1. Многопоточное консольное приложение Java, которое одновременно отправляет несколько HTTP-запросов по нескольким потокам с моего компьютера.
  2. Отдельный сервлет Java, который одновременно отправляет HTTPS-запросы с одного сервера на другой по нескольким потокам.

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

Как мне реализовать это, просто использовать класс requestDispatcher для вызова другого сервлета или есть лучший способ?

Приветствуются любые советы!


person tomaytotomato    schedule 05.11.2012    source источник


Ответы (2)


Я бы посоветовал вам изучить JMeter. Это отличный инструмент для имитации нагрузки на веб-приложения/сервлеты (и другие). Вы можете определить (ветвящиеся) рабочие процессы, несколько потоков, группы потоков, задержки, время нарастания и т. д.

Я думаю, что это идеально подошло бы под ваш вариант 1) критерии.

Ваше здоровье,

person Anders R. Bystrup    schedule 05.11.2012
comment
Спасибо за это, это кажется немного сложным в эксплуатации. Он имеет много особенностей. Возможно, немного излишне для того, что мне нужно. - person tomaytotomato; 05.11.2012
comment
Справедливо, ваш звонок :-) Это это очень универсальный инструмент, но вам не нужно использовать все возможности... Существует хорошее онлайн-руководство/учебник с большим количеством скриншотов, например. jmeter.apache.org/usermanual/build-web-test-plan. html -- я все еще думаю, что вы должны попробовать, прежде чем писать код самостоятельно. Ваше здоровье, - person Anders R. Bystrup; 05.11.2012
comment
Эта ссылка намного лучше, чем основной учебник, спасибо, @Anders! - person tomaytotomato; 05.11.2012

Возможно, вы можете попробовать инструмент тестирования Apache (ab). Это просто и полезно. Вам просто нужно указать количество клиентских потоков, общее количество запросов и URL-адрес, который вы хотите протестировать, после чего вы сможете получить то, что вам нужно.

person Ivan Lee    schedule 05.11.2012
comment
Спасибо и за это, но, к сожалению, я использую веб-сервер Oracle. Однако я буду помнить об этом для других проектов, использующих LAMP. :) - person tomaytotomato; 05.11.2012