Мне было поручено найти решение для тестирования производительности для одного из наших приложений Java, работающих на сервере Weblogic. Требование состоит в том, чтобы записывать производственные запросы (как GET, так и POST, включая данные POST), а затем запускать эти запросы в среде тестирования производительности с копией производственной базы данных.Приложение для тестирования производительности для шеек бутылок с использованием производственных данных
Причины использования запросов производства вместо тестового сценария являются:
- Это большое приложение без каких-либо существующих тестовых сценариев, так что было бы аа большой объем работы, чтобы писать сценарии, чтобы покрыть все заявки ,
- Некоторые проблемы с производительностью возникают, когда пользователи выполняют ряд действий в определенном порядке.
- Для проверки использования фактического взаимодействия пользователя с системой не является оценка того, как пользователи могут взаимодействовать с системой. Мы все знаем, что пользователи будут делать то, о чем мы не думали.
- Я хочу, чтобы уметь исправлять проблемы с производительностью и повторно запускать запросы против фиксированного кода перед выпуском на производство.
Я посмотрел на использование JMeters Access Log Sampler с журналов доступа сервера, однако журналы доступа не содержат данные POST и журнал пробоотборник доступа выглядит только по запросу URL, поэтому он не может имитировать пользователей подавших данные формы.
Я также рассмотрел использование HTTP-прокси-сервера JMeter, однако он может записывать действия только одного пользователя и требует от пользователя настройки своего браузера для использования прокси-сервера. Это же ограничение существует с Tsung и The Grinder.
Я рассмотрел использование Wireshark и TCReplay, но запись на уровне пакетов чрезмерна и не даст никаких полезных отчетов на уровне запроса.
Есть ли лучший способ анализа производительности продукции, учитывая, что мне нужно иметь возможность тестировать исправления до выпуска продукции?
Спасибо за отличный ответ Nat. Я думаю, что лучший вариант - использовать фильтр сервлетов Weblogic. Это дает мне доступ к объекту ServletRequest, который затем я могу вытащить данные POST и другие данные и записать их в журнал. Затем я могу использовать данные журнала для ввода в приложение. Это будет иметь неизвестное влияние на производительность. К счастью, он должен будет работать в течение короткого периода времени, чтобы получить образец производственного взаимодействия. – JosephL