Главная · Скиллы · convex-performance-audit

convex-performance-auditаудит производительности Convex

get-convex/agent-skills

Диагностика и устранение проблем производительности Convex: hot-path reads, write contention, оптимизация subscriptions. Конкретные метрики и исправления.

Установка

npx -y skills add get-convex/agent-skills --skill convex-performance-audit --agent claude-code

Аудит производительности Convex

Диагностика и устранение проблем производительности в приложениях Convex — по одному классу проблем за раз.

Когда использовать

  • Страница или функция Convex работает медленно или обходится дорого.
  • npx convex insights --details сообщает о высоких bytes read, documents read или OCC conflicts.
  • Низкочастотные read-пути используют реактивность там, где достаточно point-in-time reads.
  • Ошибки OCC-конфликтов или избыточные повторные попытки мутаций.
  • Высокое количество подписок или медленное обновление UI.
  • Функции приближаются к лимитам выполнения или транзакций.

Когда НЕ использовать

  • Первоначальная настройка Convex, настройка аутентификации или извлечение компонентов.
  • Чистые миграции схемы без цели производительности.
  • Разовые микрооптимизации без пользовательски или деплой-видимой проблемы.

Первый шаг: сбор сигналов

  1. Если Health insights из дашборда уже доступны — используйте их как первоклассный источник.
  2. Если доступен CLI insights, запустите npx convex insights --details. При необходимости добавьте --prod, --preview-name или --deployment-name.
  3. Если runtime-сигналы недоступны — проводите аудит по коду, соблюдая ограничения.

Маршрутизация по сигналам

СигналСправочный файл
Высокие bytes/docs read, JS-фильтрация, ненужные join'ыreferences/hot-path-rules.md
OCC-конфликты, write contention, повторные попытки мутацийreferences/occ-conflicts.md
Высокое количество подписок, медленные обновления UIreferences/subscription-cost.md
Таймауты функций, превышение размера транзакцийreferences/function-budget.md
«Просто медленно» без конкретного сигналаНачните с references/hot-path-rules.md

Рабочий процесс

1. Определить область проблемы

Выберите один конкретный пользовательский флоу из реального проекта. Запишите: точки входа функций; клиентские вызовы useQuery, usePaginatedQuery, useMutation; таблицы чтения и записи; является ли путь high-read, high-write или обоими.

2. Трассировка полного набора чтений и записей

Для каждой функции на пути: трассируйте каждый ctx.db.get() и ctx.db.query(); каждый ctx.db.patch(), ctx.db.replace(), ctx.db.insert(); внешние key-поиски, JS-side фильтрацию и полные чтения документов. В Convex каждое лишнее чтение увеличивает нагрузку на транзакцию, а каждая запись может инвалидировать реактивных подписчиков.

3. Применить исправления из подходящего справочника

Прочитайте файл, соответствующий классу проблемы. Каждый справочник содержит паттерны, примеры кода и рекомендованный порядок исправления. Не ограничивайтесь одной функцией из сигнала — трассируйте смежные читатели и писатели тех же таблиц.

4. Исправить смежные функции вместе

Если в одной функции, затрагивающей таблицу, обнаружена проблема производительности — проверьте смежные функции на тот же паттерн. Не оставляйте один путь исправленным, а другой — на старом паттерне.

5. Проверить перед завершением

  • Результаты те же, что до исправления, нет потерянных записей.
  • Устранённые чтения/записи больше не находятся на пути.
  • Fallback-поведение работает при отсутствии денормализованных полей.
  • Часто обновляемые поля изолированы от широко читаемых документов.
  • Каждый смежный читатель и писатель проверен.

Чек-лист

  • Собраны сигналы из insights, дашборда или аудита кода.
  • Определён класс проблемы, прочитан соответствующий справочный файл.
  • Очерчен один конкретный пользовательский флоу.
  • Трассированы все чтения и записи на этом пути.
  • Определены смежные функции, затрагивающие те же таблицы.
  • Применены исправления из справочника.
  • Смежные функции исправлены единообразно.
  • Поведение проверено, регрессии отсутствуют.

Из того же репозитория

convex-quickstartбыстрый старт с Convex
get-convex/agent-skills
От нуля до рабочего Convex backend за минуты: npm create convex с шаблонами React+Vite+shadcn или Next.js. Настройка переменных окружения и первый деплой.
3159.2k установок
convex-setup-authаутентификация в Convex приложениях
get-convex/agent-skills
Безопасная аутентификация в Convex: Convex Auth, Clerk, WorkOS AuthKit, Auth0 и другие провайдеры. Настройка, токены и защита функций.
3158.6k установок
convex-migration-helperмиграции схем Convex
get-convex/agent-skills
Миграции схем Convex без поломки продакшена: смена типов полей, добавление обязательных полей, реструктуризация таблиц. Безопасные поэтапные изменения.
3158.5k установок
convex-create-componentкомпоненты Convex с изоляцией
get-convex/agent-skills
Создаёт Convex компоненты с изолированными таблицами и чистыми границами между приложением и переиспользуемой логикой. Правильная структура компонентов.
3158.5k установок
convexConvex бэкенд real-time база данных
get-convex/agent-skills
Convex: бэкенд с real-time базой данных.
3135.1k установок
convex-helpers-guideруководство помощников Convex
get-convex/agent-skills
Руководство по помощникам Convex.
31572 установок