Size: a a a

QA — Load & Performance

2020 August 13

KY

Kirill Yurkov in QA — Load & Performance
Kirill Yurkov
MetaQueries не смотрел для графаны?
посмотри MetaQueries плагин для графаны, у меня не взлетел, но я в него минут 30 потыкал
источник

KY

Kirill Yurkov in QA — Load & Performance
в целом он подобные задачи у людей решает точно
источник

СФ

Степа Фомичев... in QA — Load & Performance
Я уже смотрю) выглядит здорово, возможно, если психану, перепишу на него
источник

KY

Kirill Yurkov in QA — Load & Performance
советую попробовать сначала, там похоже с Influx дружба слабенькая
источник

СФ

Степа Фомичев... in QA — Load & Performance
Да, естественно
источник

СФ

Степа Фомичев... in QA — Load & Performance
У меня, в принципе, уже го твоё решение есть
источник

СФ

Степа Фомичев... in QA — Load & Performance
Но я сейчас скину пример запроса, и вы оцените боль)
источник

KY

Kirill Yurkov in QA — Load & Performance
на flux?
источник

VG

Viktor Ganeles in QA — Load & Performance
я пробовал на timeShift proxy - работает. Но как действовать, если у меня больше одной БД в инфлаксе я не понял.
источник

СФ

Степа Фомичев... in QA — Load & Performance
Вот обычный график, всем знакомый
источник

KY

Kirill Yurkov in QA — Load & Performance
Viktor Ganeles
я пробовал на timeShift proxy - работает. Но как действовать, если у меня больше одной БД в инфлаксе я не понял.
без коробочного функционала, имхо, это все полумеры
источник

СФ

Степа Фомичев... in QA — Load & Performance
import "regexp"

firstTable = from(bucket: "${database}")
 |> range(start: ${firstTestStartTime}, stop: ${firstTestEndTime})
 |> filter(fn: (r) => r._measurement == "${measurement}")
 |> filter(fn: (r) => r.application == "${first_project}")
 |> filter(fn: (r) => r.testId == "${test_1}")
 |> filter(fn: (r) => r._field == "pct95.0")
 |> filter(fn: (r) => r.statut == "all")
 |> filter(fn: (r) => r.transaction =~ /${first_test_transaction:regex}/)
 |> timeShift(duration: ${timeshift})
 |> map(fn: (r) => ({_value:r._value, _time:r._time, _field:"Test #1 " + r.transaction}))

secondTable = from(bucket: "${database}")
 |> range(start: ${secondTestStartTime}, stop: ${secondTestEndTime})
 |> filter(fn: (r) => r._measurement == "${measurement}")
 |> filter(fn: (r) => r.application == "${second_project}")
 |> filter(fn: (r) => r.testId == "${test_2}")
 |> filter(fn: (r) => r._field == "pct95.0")
 |> filter(fn: (r) => r.statut == "all")
 |> filter(fn: (r) => r.transaction =~ /${second_test_transaction:regex}/)
 |> map(fn: (r) => ({_value:r._value, _time:r._time, _field:"Test #2 " + r.transaction}))
 
union(tables: [firstTable, secondTable])
источник

СФ

Степа Фомичев... in QA — Load & Performance
Вот запрос)
источник

VG

Viktor Ganeles in QA — Load & Performance
Kirill Yurkov
самое удивительное! даже для одиночных запросов есть метрики персентилей)
взять 90%% от одного значения не сложно. Но оно тогда должно совпадать с MIN/MAX/AVG значением.
источник

KY

Kirill Yurkov in QA — Load & Performance
Viktor Ganeles
взять 90%% от одного значения не сложно. Но оно тогда должно совпадать с MIN/MAX/AVG значением.
тогда вероятно там действительно ряд данных - голые
источник

KY

Kirill Yurkov in QA — Load & Performance
Степа Фомичев
import "regexp"

firstTable = from(bucket: "${database}")
 |> range(start: ${firstTestStartTime}, stop: ${firstTestEndTime})
 |> filter(fn: (r) => r._measurement == "${measurement}")
 |> filter(fn: (r) => r.application == "${first_project}")
 |> filter(fn: (r) => r.testId == "${test_1}")
 |> filter(fn: (r) => r._field == "pct95.0")
 |> filter(fn: (r) => r.statut == "all")
 |> filter(fn: (r) => r.transaction =~ /${first_test_transaction:regex}/)
 |> timeShift(duration: ${timeshift})
 |> map(fn: (r) => ({_value:r._value, _time:r._time, _field:"Test #1 " + r.transaction}))

secondTable = from(bucket: "${database}")
 |> range(start: ${secondTestStartTime}, stop: ${secondTestEndTime})
 |> filter(fn: (r) => r._measurement == "${measurement}")
 |> filter(fn: (r) => r.application == "${second_project}")
 |> filter(fn: (r) => r.testId == "${test_2}")
 |> filter(fn: (r) => r._field == "pct95.0")
 |> filter(fn: (r) => r.statut == "all")
 |> filter(fn: (r) => r.transaction =~ /${second_test_transaction:regex}/)
 |> map(fn: (r) => ({_value:r._value, _time:r._time, _field:"Test #2 " + r.transaction}))
 
union(tables: [firstTable, secondTable])
выглядит хреново
источник

VG

Viktor Ganeles in QA — Load & Performance
Kirill Yurkov
тогда вероятно там действительно ряд данных - голые
случайно голые, там где интенсивность низкая :)
источник

KY

Kirill Yurkov in QA — Load & Performance
Viktor Ganeles
случайно голые, там где интенсивность низкая :)
ага)
источник

KY

Kirill Yurkov in QA — Load & Performance
итого чем интенсивнее тест - тем меньше правды)
источник

KY

Kirill Yurkov in QA — Load & Performance
стопятьсот тысяч запросов в секунду лучше так не гонять)
источник