WireMock Performance и нагрузочное тестирование

Есть ли способ сделать WireMock Standalone быстрее? У меня есть файл ответов размером 1 КБ, который я хочу вернуть в течение 3–10 мсек. В настоящее время ответ возвращается в течение 20–40 мсек.

Это для индивидуального запроса / ответа от SoapUI, поэтому его также необходимо масштабировать под нагрузкой, хотя я считаю, что это можно сделать с помощью переключателей командной строки / параметров Jetty.

Машина 2x2,8 ГГц (64 бит) / 32 ГБ ОЗУ


person DawnFreeze    schedule 28.06.2017    source источник
comment
Вы используете файлы или тело указано в определении сопоставления?   -  person Tom    schedule 28.06.2017
comment
WireMock не имеет ничего общего с производительностью и никогда не будет. Выполнение тестирования производительности таким образом не дает вам никакой полезной информации о Jetty или вашем SoapUI, а только о производительности WireMock.   -  person Joakim Erdfelt    schedule 28.06.2017
comment
@Tom Да, все довольно плоско, кроме использования преобразователя для корреляции (но я получаю тот же результат, когда удаляю его. Это файл xml в __Files, и используется простое сопоставление xpath   -  person DawnFreeze    schedule 28.06.2017
comment
@JoakimErdfelt Не уверен, что вы здесь имеете в виду. Мне нужно превратить мое приложение в узкое место под нагрузкой, и для этого мне нужно, чтобы WireMock ответил за <10 мс макс. Я использую SoapUI только для времени запросов.   -  person DawnFreeze    schedule 28.06.2017


Ответы (1)


Вы можете обнаружить, что размещение тел ответа непосредственно в сопоставлениях заглушек работает лучше (что вы можете сделать как base64, если они двоичные).

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

Другой альтернативой, если у вас есть возможность, было бы смонтировать каталог __files в более быстром хранилище, например. рамдиск.

person Tom    schedule 29.06.2017
comment
Спасибо, Том, это определенно улучшило производительность (просто использовался необработанный XML с escape-символами в файле сопоставления), теперь он стабильно находится между 13-20 мс. Как вы думаете, это настолько быстро, насколько возможно? - person DawnFreeze; 30.06.2017
comment
Это не то, что я когда-либо тестировал или настраивал специально, поэтому я не могу сказать, насколько быстро можно ожидать. - person Tom; 30.06.2017
comment
Откуда вы измеряете? Это 13-20 мс туда и обратно с точки зрения вашего клиента? И вы вызываете его через реальную сеть или через адаптер обратной связи вашего компьютера? - person Tom; 30.06.2017
comment
Измерения от клиента по сети, туда и обратно, поэтому время в пути включено. Он согласуется с тысячами запросов, поэтому это точное указание скорости обработки. Вероятно, это будет быстрее локально, однако инфраструктура удаленного компьютера необходима. - person DawnFreeze; 02.07.2017
comment
Было бы интересно посмотреть, как выглядят тайминги локально, чтобы вы могли контролировать влияние сети. Кроме того, вы каждый раз объединяете соединения или восстанавливаете их? - person Tom; 03.07.2017
comment
Хорошо, я тестировал локально, последовательно 13-15 мс без объединения соединений, каждый раз восстанавливая соединение. - person DawnFreeze; 03.07.2017
comment
Для меня это звучит неплохо. Установка TCP-соединений не из дешевых. Может быть, стоит включить пул и посмотреть, как это работает? Таким образом, вы устранили влияние как времени соединения, так и времени инициации TCP. - person Tom; 04.07.2017
comment
Просто некоторый контекст, чтобы лучше понять мой первоначальный запрос, в настоящее время я использую другой инструмент, который я хочу заменить (WireMock - гораздо более элегантное решение для моих требований), который последовательно выполняет <5 мс при работе на той же машине и под те же обстоятельства. - person DawnFreeze; 05.07.2017
comment
@DawnFreeze, какой инструмент работал на ‹5 мсек? - person Wojtek; 12.01.2018
comment
@Wojtek CA Lisa DevTest VSE - person DawnFreeze; 19.01.2018