Size: a a a

QA — Load & Performance

2020 August 13

СФ

Степа Фомичев... in QA — Load & Performance
У меня просто  jmeter в докере запускается, и в качестве энтрипоинта там сам процесс jmeter, т.е. либо мне энтрипоинтом нужно делать sh скрипт, который после завершения jmeter процесса все файлы мне отдает, либо так
источник

СФ

Степа Фомичев... in QA — Load & Performance
Решил пойти по пути наименьшего сопротивления) Тут очевидный минус в использовании рефлексии, но я провел аналитику, что это поле(к которому я получаю доступ) не менялось с самых древних версий jmeter, сорцы которых я смог найти(2.что-то там), и решил что риск в рамках разумного.
источник

S7

Sam 7 in QA — Load & Performance
Kirill Yurkov
#jmeter #listener_close
import java.time.*;
import java.util.*;
import org.apache.jmeter.samplers.SampleResult;

def getSampleListeners = {-> def sample_listeners = vars.getObject("JMeterThread.pack").getSampleListeners()}
def sample_listeners = getSampleListeners()

sample_listeners.each { it ->

try {
       log.info("\n-----------------" + it.toString());
       it.testEnded();
   } catch (Exception ex) {
       log.warn("Error encountered during shutdown of {}\n{}",it.toString(), ex);
   }
}
источник

S7

Sam 7 in QA — Load & Performance
вот так короче и без рефлексии
источник

S7

Sam 7 in QA — Load & Performance
и еще проверил, пример выше тушил все лисенеры
источник

СФ

Степа Фомичев... in QA — Load & Performance
Sam 7
и еще проверил, пример выше тушил все лисенеры
А тут же только лисенеры в данной группе можно найти?
источник

S7

Sam 7 in QA — Load & Performance
Степа Фомичев
import org.apache.jmeter.testelement.TestStateListener;
import org.apache.jorphan.collections.SearchByClass;
import org.apache.jmeter.threads.JMeterContextService;
import org.apache.jmeter.threads.JMeterContext;
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jorphan.collections.HashTree;
import java.lang.reflect.Field;

JMeterContext ctx = JMeterContextService.getContext();
StandardJMeterEngine engine = ctx.getEngine();

Field f = engine.getClass().getDeclaredField("test");
f.setAccessible(true);

HashTree hash = (HashTree) f.get(engine);

SearchByClass<TestStateListener> testListeners = new SearchByClass<>(TestStateListener.class); // TL - S&E
hash.traverse(testListeners);

for (TestStateListener listener : testListeners.getSearchResults()) {
   try {
       log.info(listener.toString());
       listener.testEnded();
   } catch (Exception ex) {
       log.warn("Error encountered during shutdown of " + listener.toString(), ex);
   }
}
спасибо тебе за идею!!👍
источник

СФ

Степа Фомичев... in QA — Load & Performance
Просто если засунуть этот скрипт в teardown thread group, насколько я понимаю, будут видны лисенеры только оттуда, нет?
источник

S7

Sam 7 in QA — Load & Performance
Степа Фомичев
А тут же только лисенеры в данной группе можно найти?
та вроде бы все, т к я делаю это в тирдаун группе
источник

СФ

Степа Фомичев... in QA — Load & Performance
Ок, тогда отличное решение) точно сворую) и мой сенсей не будет ворчать про рефлексию🌚
источник

AU

Alex Under in QA — Load & Performance
Всем привет
Подскажите пожалуйста. При тестировании надёжности (примерно 85% нагрузка от максимальной) на сервере БД processor queue length скачками прыгает до ~10 каждые 30 секунд. Есть ли какие-нибудь рекомендации, куда смотреть, что бы понять от чего это происходит?
источник

KY

Kirill Yurkov in QA — Load & Performance
Sam 7
import java.time.*;
import java.util.*;
import org.apache.jmeter.samplers.SampleResult;

def getSampleListeners = {-> def sample_listeners = vars.getObject("JMeterThread.pack").getSampleListeners()}
def sample_listeners = getSampleListeners()

sample_listeners.each { it ->

try {
       log.info("\n-----------------" + it.toString());
       it.testEnded();
   } catch (Exception ex) {
       log.warn("Error encountered during shutdown of {}\n{}",it.toString(), ex);
   }
}
#jmeter #listener_close
источник

KY

Kirill Yurkov in QA — Load & Performance
Alex Under
Всем привет
Подскажите пожалуйста. При тестировании надёжности (примерно 85% нагрузка от максимальной) на сервере БД processor queue length скачками прыгает до ~10 каждые 30 секунд. Есть ли какие-нибудь рекомендации, куда смотреть, что бы понять от чего это происходит?
нужно понять логику работы бд и ее настройки, регулярные операции, логирование и тд. остальные метрики коррелируются с этим сбросом?
источник

A

Alex in QA — Load & Performance
Alex Under
Всем привет
Подскажите пожалуйста. При тестировании надёжности (примерно 85% нагрузка от максимальной) на сервере БД processor queue length скачками прыгает до ~10 каждые 30 секунд. Есть ли какие-нибудь рекомендации, куда смотреть, что бы понять от чего это происходит?
а с чего вы взяли что это проблема вообще? Сомневаюсь что у вас там мало ядер, а для условных 16 ядер очередь в пике до 10 это почти обычное дело
источник

AU

Alex Under in QA — Load & Performance
Alex
а с чего вы взяли что это проблема вообще? Сомневаюсь что у вас там мало ядер, а для условных 16 ядер очередь в пике до 10 это почти обычное дело
Да, кажется я зря тревогу поднял

Если я правильно понимаю скачки до 10 при 6 ядрах это может быть нормально
источник

AU

Alex Under in QA — Load & Performance
Alex
а с чего вы взяли что это проблема вообще? Сомневаюсь что у вас там мало ядер, а для условных 16 ядер очередь в пике до 10 это почти обычное дело
А какая логика? Меньше ядер меньше всплески или наоборот?
источник

A

Alex in QA — Load & Performance
да никакой логики не было, просто емнип оно считается в общем, и это может значить что у вас просто на каждом по 1 условно, но я думал у вас побольше ядер :)
источник

A

Alex in QA — Load & Performance
А вообще, это вам не особо много чего даст, если вы конечно не БД разрабатываете. Максимум что вы можете исправить это запросы\схему, а там проще смотреть на внутренние метрики БД
источник

AG

Alex Grishutin in QA — Load & Performance
Ребзя, вопрос немного не в ту степь, но. Насколько правильно закрывать дыры в перфе при помощи кеширования cloudflare?)

Пусть и не навсегда, но для быстрого релиза
источник

AG

Alex Grishutin in QA — Load & Performance
Меня как перф инженера решение такое коробит, но оно работает блин
источник