Perfscale news #4. GRPC, Fixed Triggers, Child Process

3 мин
Perfscale news #4. GRPC, Fixed Triggers, Child Process

Приветствую, любители нагрузки. Для истории прошлые выпуски

  • Новости Perfscale #1: OSS, сопровождение QUERY метода и венчурная история

  • Perfscale news #2: Fix Protocol, Magic metrics и MCP

  • Perfscale news #3. Websocket, Inference, NPM

Эта неделя открывает долгожданные фичи, начнём с OSS части:

GRPC

В третьем выпуске я намекал, что после Websocket на очереди gRPC. Так вот — он здесь. Теперь perfscale умеет гонять не только REST, WebSocket и FIX, но и полноценный gRPC: unary, client/server streaming и bidi. Схема подтягивается либо через reflection, либо через descriptor-файл — на выбор.

Несложный unary-вызов выглядит так:

steps: - uses: std/grpc@v1 with: url: grpc://api.example.com:50051 service: программный интерфейс.OrderService method: CreateOrder proto: reflection: true payload: customer_id: "cust-${seq}" items: - sku: "SKU-${rand(1000,9999)}" qty: "${rand(1,10)}" check: status: OK json: { order_id: "${exists}" }

А если вам нужен streaming — используйте отдельные шаги жизненного цикла, как и с Websocket:

  • std/grpc-connect@v1 — устанавливает соединение

  • std/grpc-send@v1 — отправляет сообщение в поток

  • std/grpc-recv@v1 — читает до stopping rule (until_json, until_contains или количество)

  • std/grpc-close@v1 — закрывает поток и соединение

Метрики, которые теперь доступны из коробки:

  • grpc_req_duration — цельный цикл unary-вызова (p50 / p95 / max)

  • grpc_stream_duration — время жизни стрима

  • grpc_msgs_sent / grpc_msgs_received — throughput согласно информации

  • grpc_streams_active — одновременно открытые стримы

Кстати, reflection работает не со всеми серверами (кому-то безопасность не даёт возможность), следовательно descriptor-файл через proto: { file: "service.pb" } — план Б.

Child Process

Вторая функционал этой недели в OSS — std/child_process@v1. Теперь из нативного YAML-теста можно запустить дочерний процедура: поднять mock-сервер, fixture-базу, sidecar — всё, что нужно SUT. Процесс живёт across the run, step возвращается сразу после readiness-гейта.

Важно: нужно явно разрешить процессы в конфиге через allow_process_actions: true.

Пример — поднимаем Python HTTP-сервер перед тестом и гасим после:

# file: config.yaml
before: - name: web uses: std/child_process@v1 with: command: python3 args: ["-m", "http.server", "8080"] waitUntil: port_open: 8080 timeout: 10s restart: on-failure max_restarts: 3 outputs: web
after: - name: stop web uses: std/kill_process@v1 with: name: web signal: TERM grace_ms: 5000

И сам тест:

#file: test.yaml
steps: - uses: std/http@v1 with: url: "http://127.0.0.1:8080/health" check: status: 200

Что умеет std/child_process@v1:

  • port: 0 — авто-назначает свободный порт и экспортирует его в дочерний процедура как PORT

  • waitUntil — ждёт readiness по stdout_contains, stderr_matches, port_open или их комбинации

  • restart — never (default), on-failure или always с max_restarts и backoff_ms

  • buffer_kb — размер tail-буфера для stdout/stderr (default 64 KiB)

  • Авто-убийство — что бы ни случилось (нормальный финиш, упавший before:, Ctrl-C), perfscale прибивает все запущенные процессы автоматически: SIGTERM → grace period → SIGKILL, полностью process group. Забытый kill_process не забирает ресурсы после тестов.

А std/kill_process@v1 останавливает процедура по имени (рекомендуется) или raw pid. tree: true (default) шлёт сигнал всей группе. На Windows raw pid не поддерживается, а tree игнорируется — убивается только direct child.

Кстати, под капотом k6 и Locust в perfscale всегда были child processes. Разница теперь в том, что вы можете управлять своими собственными процессами с теми же гарантиями: readiness-гейты, рестарт-политики, tail stdout/stderr и корректное завершение.

Fixed Triggers

А теперь про платформу. Долгое время тесты в Perfscale Platform запускались главным образом из CI (GitHub Actions, Jenkins, CircleCI) или руками через ui. Триггеры какое-то время работали некорректно. А теперь прямо на платформе — вы можете прям задать условия, по которым прогон стартует сам.

Бонус пункт

А еще, что касается perfscale платформы: это работающие платежи для https://perfscale.ru. После подключения к ЮКасса я наконец-то могу выставлять счета не только организациям.

Github: https://github.com/Perfscale/perfscale

Docs: https://perfscale.ru/docs

Site: https://perfscale.ru

Давайте сделаем нагрузку лучше!

Читают сейчас

Астрономы обнаружили маленькие красные точки, готовящиеся к слиянию

25 минут назад

Астрономы обнаружили маленькие красные точки, готовящиеся к слиянию

Существует мнение, что в крупных галактиках современной Вселенной находятся сверхмассивные чёрные дыры (СМЧД). Тем не менее точно неизвестно, как именно эти чёрные дыры стали столь массивными, хотя ас

Вышел альфа-релиз Paint.NET 5.2 с экспериментальной поддержкой Wine/Linux

2 часа назад

Вышел альфа-релиз Paint.NET 5.2 с экспериментальной поддержкой Wine/Linux

1 сентября 2026 года состоялся выпуск альфа-версии графического редактора с открытым исходным кодом Paint.NET 5.2 для Windows 10/11 (64-бита) и с экспериментальной поддержкой Wine/Linux (Wine 11.14, U

2 часа назад

Операционная платформа «Альт Образование» бесплатна для школ — акция от «Базальт СПО»

Операционная платформа «Альт Образование» бесплатна для школ — акция от «Базальт СПО» Организация «Базальт СПО» запускает специальное предложение для школ: операционная система «Альт Образование» 11 п

Google добавила агентный аналитика видео в Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite

2 часа назад

Google добавила агентный аналитика видео в Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite

Google запустила агентный анализ видео для Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite. Теперь модель анализирует видео не как последовательность кадров с фиксированной частотой, а сама решает, какие

Апдейт платформы «Октопус» от ГК «Юзтех»: историческая анализ и расширенная сопровождение инфраструктур

3 часа назад

Апдейт платформы «Октопус» от ГК «Юзтех»: историческая анализ и расширенная сопровождение инфраструктур

В новых версиях «Октопус» мы сфокусировались на трёх направлениях: расширении возможностей управления ИТ-инфраструктурой, повышении производительности и развитии интеграций. Система получила новые сце