Приложение для тестирования производительности горлышек бутылок с использованием производственных данных - PullRequest
2 голосов
/ 12 ноября 2009

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

Причины использования производственных запросов вместо тестового сценария:

  1. Это большое приложение без существующих тестовых сценариев, поэтому было бы очень сложно написать сценарии для всего приложения.
  2. Некоторые проблемы с производительностью возникают только тогда, когда пользователи выполняют ряд действий в определенном порядке.
  3. Тестирование с использованием фактического взаимодействия пользователя с системой, а не оценка того, как пользователи могут взаимодействовать с системой. Мы все знаем, что пользователи будут делать то, о чем мы не думали.
  4. Я хочу иметь возможность исправить проблемы с производительностью и повторно выполнить запросы к фиксированному коду перед выпуском в эксплуатацию.

Я рассмотрел использование JMeters Access Log Sampler с журналами доступа к серверу, однако журналы доступа не содержат данных POST, а сэмплер журнала доступа просматривает только URL-адрес запроса, поэтому он не может имитировать отправку данных формы пользователями .

Я также рассмотрел использование прокси-сервера JMeter HTTP, однако он может записывать действия только одного пользователя и требует, чтобы пользователь настроил свой браузер для использования прокси. Такое же ограничение существует у Цунга и Гриндера.

Я рассмотрел использование Wireshark и TCReplay, но запись на уровне пакетов является чрезмерной и не даст никаких полезных отчетов на уровне запроса.

Есть ли лучший способ проанализировать производственную производительность, учитывая, что мне нужно иметь возможность тестировать исправления перед выпуском в производство?

Ответы [ 4 ]

0 голосов
/ 30 ноября 2009

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

1) Использование coremetrics: CoreMetrics предоставляет такие решения, с помощью которых вы можете узнать шаблоны использования приложения. Это поможет создать точную модель рабочей нагрузки. Затем эту модель можно преобразовать в тестовые сценарии и выполнить для маскированной копии рабочей базы данных. Это даст вам точные результаты о производительности приложения в режиме реального времени.

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

С уважением, batterywalam

0 голосов
/ 16 ноября 2009

Честно говоря, я не уверен, что задача, которую вас просят сделать, даже возможна, не говоря уже о хорошей идее. В зависимости от того, насколько сложным является бэкэнд приложения и насколько идеально вы можете воссоздать состояние (то есть: вплоть до внешних служб SOA или времени / часов), может быть невозможно, чтобы эти запросы GET и POST воспроизводили одно и то же поведение.

Тем не менее, тестирование производительности с производственными данными всегда великолепно, но, как правило, требует знаний по конкретным приложениям, которые будут подчеркивать упомянутые данные. Простое повторение HTTP GET и POST почти наверняка не даст полезных результатов.

Удачи!

0 голосов
/ 19 ноября 2009

Это будет трудный вопрос. Я работаю с Visual Studio Test Edition, чтобы загружать тесты своих приложений, и мы можем только «оценить» активность пользователей на сайте.

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

С любыми текущими инструментами я не думаю, что возможно записать и воспроизвести фактическое взаимодействие с пользователем.

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

Тем не менее, я работал с веб-приложениями, которые выполняют этот уровень ведения журналов, и возможность анализировать точные серии постов / запросов страниц, которые вызвали ошибку, весьма ценна для разработчика.

Итак, подведем итог: это возможно, но я не слышал ни о каких готовых инструментах, которые это делают.

0 голосов
/ 16 ноября 2009

Пожалуйста, ознакомьтесь с этим техническим документом Impetus Technologies на этой странице. http://www.impetus.com/plabs/sandstorm.html

...