load-tester Все курсы

Проверка визуальных объяснений

Это демонстрация для авторов уроков. Переключи тему оформления, проверь узкое окно и настройку «уменьшить движение». Данные и задержки здесь синтетические. Каждый виджет сам начинает с заданных значений, под ним есть блок «Что сейчас происходит» и строка «Попробуй».

Атрибуты со списками (data-x, data-only) пишутся через запятую. data-series и data-steps содержат JSON в одинарных кавычках, апострофов внутри быть не должно. Время задаётся в миллисекундах, если не сказано иное.

Путь запроса

Атрибуты: data-net (мс сети в одну сторону), data-app (мс работы магазина), data-db (мс базы).

Очередь у кассы

Атрибуты: data-servers (число касс, 1–6), data-rate (покупателей в минуту), data-service (секунд на одного покупателя).

Перцентили

Атрибуты: data-slow (сколько из 100 запросов тормозят, 0–30), data-slow-ms (сколько длится тормозящий запрос, 200–3000). Старое имя latency-hist работает как псевдоним.

Запас до предела

Атрибуты: data-capacity (предел, запросов в секунду), data-base (мс работы без очереди), data-load (стартовая нагрузка), data-unit (единица нагрузки).

Профили нагрузки

Без атрибутов показаны все профили:

data-only оставляет только нужные:

Пул соединений

Атрибуты: data-size (размер пула), data-duration (мс на один запрос), data-rate (запросов в секунду), data-timeout (мс ожидания свободного слота).

Линейный график

Атрибуты: data-type, data-x, data-series (JSON, у серии можно задать свой "unit"), data-x-label, data-y-label, data-unit, data-title, data-explain (текст под графиком). Наведение на точку показывает значение, клик по легенде скрывает серию.

Столбчатый график

Алгоритм диагностики

data-steps: массив строк или объектов {"title": "коротко", "text": "подробности"}. Обратные кавычки в тексте становятся кодом.

Mermaid: путь запроса

Блок с языком mermaid лениво загружает библиотеку. Без таких блоков библиотека не запрашивается.

flowchart LR
    A[Покупатель] --> B[Магазин]
    B --> C[(PostgreSQL)]
    B --> D[(Redis)]
    B --> E[Заглушка оплаты]
    C --> F[Метрики и логи]
    F --> G[Вывод об узком месте]

Mermaid: последовательность

sequenceDiagram
    participant B as Браузер
    participant S as Магазин
    participant P as PostgreSQL
    B->>S: POST /api/orders
    S->>P: Сохранить заказ
    P-->>S: Заказ создан
    S-->>B: 201 Created

Виджеты тем

Эти виджеты лежат в assets/js/viz/<папка-темы>.js и подключаются на всех страницах автоматически.

Тема 1: Linux

Конвейер команд:

Load average и ядра (data-cores, data-load):

Из чего складывается время запроса (data-dns, data-rtt, data-server в мс):

Тема 2: как устроен веб-сервис

Обмен запросом и ответом (data-set: http, auth или all):

Поиск с индексом и без (data-rows: строк в таблице, data-matches: подходящих):

Тема 4: Python

Пошаговое выполнение кода (data-code: JSON-массив строк, data-steps: JSON [{l,v,o,n,f}], рабочие примеры в уроках 4.2 и 4.4). Индексы и срезы:

Новое соединение на каждый запрос против Session (data-requests, data-connect, data-work в мс):

Веса задач (data-users, data-weights в JSON):

Тема 5: Docker

Жизненный цикл контейнера (data-image, data-name, data-volume):

Слои и кэш сборки (data-change: none, app, requirements или base; data-order: good или bad):

Порядок запуска и healthcheck (data-seed, data-condition):

Лимиты CPU и памяти (data-rps, data-cpus, data-mem, data-leak, data-restart):

Тема 6: автотесты API

Граничные значения параметра (data-param: size или page, data-value):

Пирамида тестов (data-unit, data-api, data-ui):

Отчёт pytest о падении (data-fail: ok, limit, auth, schema или order):

Тесты в CI (data-fail: ok, stand, test или yaml):

Тема 7: метрики и Prometheus

Сбор метрик (data-interval: секунд между опросами):

Счётчик и rate (data-window: окно в секундах):

Перцентиль по бакетам гистограммы (data-slow: медленных из 100, data-q: перцентиль):

Дашборд RED во время теста (data-scenario: ok, pool или payment):

Метод USE на графиках стенда (data-scenario: idle, bcrypt, leak, payment или index):

Запрос к логам (data-preset: all или errors):

Жизнь алерта (data-threshold в %, data-for в секундах):

Водопад спанов одного запроса (data-scenario: order, payment, retries, n1; кнопки «Свернуть повторы», клик по строке открывает детали спана):

Тема 8: теория производительности

Закон Литтла в кафе (data-rate: гостей в минуту, data-time: секунд на гостя, data-place):

Открытая и закрытая модели нагрузки (data-rate, data-users, data-slow):

Из сессий в запросы в секунду (числа data-sessions, data-peak, data-growth; data-ops и data-limit в JSON):

Тема 9: Locust

Закрытая модель: пользователи и пауза (data-users, data-wait-min, data-wait-max в секундах, data-resp в мс, data-cap RPS):

Предел генератора (data-gen RPS на процесс, data-procs, data-server):

Координированное упущение (data-rate, data-stall в секундах):

Тема 10: k6

Виртуальные пользователи и итерации (data-vus, data-latency в мс, data-sleep в секундах):

Исполнители k6 (data-rate, data-vus, data-maxvus, data-latency, data-slow):

Пороги (data-limit в мс, data-errors в %, data-slowpct в %):

Что выбрать, k6 или Locust:

Тема 11: узкие места

Дерево диагностики (data-case от 1 до 6):

Цена bcrypt (data-rounds, data-cpus):

Индекс, N+1 и пул (data-index, data-fixed, data-pool, data-load):

Утечка памяти (data-rps, data-kb на запрос, data-limit и data-base в МБ):

Шторм ретраев (data-rate, data-capacity, data-retries, data-timeout, data-blip):

Тема 12: процесс

История прогонов в CI и регресс (data-base, data-noise, data-regress, data-at, data-threshold, data-retries):

Прогноз ёмкости (data-peak, data-capacity, data-growth в % в месяц, data-target, data-season, data-season-month, data-boost):

Тема 13: финал

Хронология инцидента (data-delay в мс, data-react в минутах):

План дня для тестового задания (data-total часов, data-plan в JSON):

Тренажёр вопросов на скорость (data-seconds, data-questions в JSON):

Мониторинг: как в настоящих интерфейсах

Эти виджеты рисуют данные в виде, привычном по рабочим инструментам: панель Grafana, Explore с Loki, водопад Tempo, страница Targets в Prometheus. Данные статичные, берутся из атрибутов (JSON в одинарных кавычках, без апострофов внутри). Широкое содержимое прокручивается внутри виджета. Двойные фигурные скобки в запросах и логах нужно оборачивать в raw (правило в CLAUDE.md).

Панель Time series: mon-panel (data-query, data-x, data-series с name, values, color green/yellow/orange/red/blue/purple, null в values рвёт линию, data-unit, data-thresholds, data-annotations, data-stack):

Та же панель с накоплением серий (коды ответов) и разрывом линии, когда нет данных:

Ряд Stat: mon-stat (data-stats: title, value, unit, color green/yellow/orange/red, spark, sub):

Explore с Loki: mon-logs (data-query, data-lines от новых к старым: ts, level, labels, line, data-highlight):

Водопад Tempo: mon-trace (data-trace-id, data-spans: id, parent, service, name, start и dur в мс, status, attrs, data-focus):

Жизнь алерта: mon-alert (data-x, data-values, data-unit, data-threshold, data-for в точках, data-name, data-group-wait в точках; состояния считаются из данных). Короткий всплеск 15:06 до порога не доживает, второй держится дольше for и срабатывает:

Prometheus Targets: mon-targets (data-targets: job, endpoint, state up/down/unknown, labels, last, duration, error):

Вкладка Table: mon-table (data-query, data-columns, data-rows, data-highlight-col, data-highlight-row):

Тема 5 мониторинга: надёжность и инциденты, урок 5.1

Хронология инцидента (mon5-timeline): двигай ползунки MTTD, MTTA, MTTI и MTTM, смотри MTTR, расход бюджета ошибок и темп расхода; наведи на отрезок, чтобы прочитать подсказку:

Тема 5 мониторинга: надёжность и инциденты, урок 5.2

Проверка задач из постмортема (mon52-actions): выбери задачу кнопкой и посмотри, какие из пяти проверок она проходит; наведи на строку, чтобы прочитать правило:

Тема 5 мониторинга: надёжность и инциденты, урок 5.3

Оплата ломается на 40 секунд из двух минут (mon5-resilience, data-orders заказов в секунду, data-retries повторов, data-timeout таймаут попытки в секундах, data-kind hang или error, data-breaker 1 включает выключатель): сколько попыток уходит к оплате, как долго ждёт покупатель и хватает ли пула из пяти соединений:

Тема 5 мониторинга: надёжность и инциденты, урок 5.4

Выкатка сразу всем и по ступеням canary (rel-rollout, data-error доля ошибок новой версии в процентах, data-detect через сколько минут заметили): сколько месячного бюджета ошибок съела плохая версия; наведи на график, чтобы увидеть минуту:

RPO и RTO на одной линии времени (rel-dr, data-interval минут между копиями, data-restore минут самого восстановления, data-rpo и data-rto цели в минутах):