🔺Рассказ от Степана Фомичева о том, как можно повернуть собеседование в свою сторону. И отвечая на вопрос о нагруженных системах продемонстрировать компетенции.
🔺Интересная задача с Gatling, где @aka_Slip хотел сделать паузу в начале сценария, но получал ошибку компиляции. Причина оказалась в том, что nothingFor доступен только для открытой модели нагрузки.
По опыту скажу, что в версии 3.3.1 сделать паузу вначале сценария не получится никак - ее можно передать, но она игнорируется. И если очень нужно сделать паузу вначале сценария, то можно так:
pause(DELAY seconds) в начале каждого сценария. Да, это костыль. Но единственное, что работает.🔹Для запуска распределенного теста JMeter в режиме Master-Slave Максиму Никифорову понадобилась обычная сеть, запустить тест через VPN с закрытыми портами не удалось. Пусть его опыт поможет другим быстрее запускать распределенные тесты.
🔹Попытка разбора ошибок вида
Non HTTP Response Code:* javax.net.ssl.SSLException/
Couldn't kikstart handshaking
* javax.net.ssl.SSLException/readHandshakeRecord
* javax.net.ssl.SSLException/Connection Reset
Были сделаны разные гипотезы: помогло или нет и в чем была причина - пока вопрос🔹Рассказ о том, что функция __UUID (The UUID function returns a pseudo random type 4 Universally Unique IDentifier (UUID)) не подходит, если нужно сформировать UUID v1 со временем и MAC-адресом. И вопрос: как поместить значение в переменную? Ответ был про возможность выполнения
vars.put 🔹Вопрос про конкурентную запись значений в Property в Apache.JMeter.
Вопрос решился при корректном использовании кавычек, и применении функции
${__P(prop_name)} взамен кода props.get("prop_name").Вообще Property - это HashMap, это не ThreadSafe-структура, и не предназначена для многопоточной записи/обновления/удаления значений. Но читать значения в несколько потоков можно. Для многопоточной записи лучше использовать ConcurrentHashMap, которую можно положить в Property в начале теста, в Setup Thread Group, а потом можно много раз считывать и уже с таким объектом работать многопоточно.
Пример:
//Setup Thread Group: Положить Map в Property
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue;
def map = new ConcurrentHashMap<String, String>();
props.put("map", map)
//Thread Group: Обновить значениеimport java.util.concurrent.ConcurrentHashMap;
ConcurrentHashMap map = props.get('map');
def auth_token = vars.get('auth_token');
map.put('token', auth_token);
//Thread Group: Получить значение и положить его в переменнуюimport java.util.concurrent.ConcurrentHashMap;
ConcurrentHashMap map = props.get('map');
def auth_token = map.get('token');
vars.put('auth_token', auth_token);
🔹Подключение к #ActiveMQ🔹Особенности регулярных выражений в JMeter и PHP/Perl. В частности в JMeter нет поддержки выражений
(?<=regexp)
🔸Как закидывать данные из #LoadRunner в #InfluxDB во время теста🔹Обработка ошибочных JSR223 Sampler (с ошибками выполнения/компиляции):
* С JSR223 PostProcessor такие Sampler не отловить - они не выполняются вообще в случае ошибки в Sampler!
* Можно попробовать JSR223 Sampler после текущего Sampler, при включенной опции Continue on error в Thread Group
* Можно выполнять проверку в JSR223 Listener
🔹О невозможнсти отправить метрики в Backend Listener по подзапросам если в Transaction Controller стоит галочка Generate Parent Sampler. Галочку придется снять.
▪️Про новый JVM Profiler от Uber
▪️Как нагрузить сайт на внешнем хостинге?
* через корпоративный прокси
* через внешнего провайдера
* ... вернее всего с нагрузочного агента внутри хостинга
но все очень зависит от целей тестирования
🔹Нерешенная проблема про использование ключей из kstore.jks для JMeter из Docker:
SSLManager:
Problem loading keystore: No key(s) found и Non HTTP response message:
Received fatal alert: handshake_failure (запросы не доходят до системы)🔹SampleResult.setIgnore() не работает для PostProcessor + TransactionController в 5.4. Это дефект, который починят в версии JMeter 5.4.1