APDEX в 1С: как перестать гадать и начать измерять

«1С тормозит» — самая бесполезная формулировка в мире. Что тормозит? Для кого? Насколько? По сравнению с чем? Без цифр разговор о производительности — гадание на кофейной гуще.

APDEX (Application Performance Index) — метрика, которая превращает субъективное «тормозит» в число от 0 до 1. Встроена в платформу 1С начиная с версии 8.3.10. Используется единицами.

Что такое APDEX и зачем он нужен

APDEX — стандарт индустрии, не изобретение 1С. Формула простая. Берём все операции за период. Делим на три группы:

Satisfied — операция выполнилась быстрее целевого порога T. Пользователь доволен.

Tolerating — операция выполнилась медленнее T, но быстрее 4T. Пользователь терпит.

Frustrated — операция выполнилась дольше 4T. Пользователь страдает.

APDEX = (Satisfied + Tolerating/2) / Total. Результат от 0 до 1. Выше 0.94 — отлично. 0.85-0.94 — хорошо. 0.7-0.85 — удовлетворительно. Ниже 0.5 — неприемлемо.

Одно число. Смотришь на него и понимаешь: система работает нормально или нет. Без длинных отчётов, без субъективных оценок.

Шкала APDEX: от 0 до 1, зоны satisfied/tolerating/frustrated

Где взять APDEX в 1С

Два источника. Первый — Центр контроля качества (ЦКК). Включается на сервере 1С, собирает метрики автоматически. Есть встроенные дашборды. Минус — ЦКК сам потребляет ресурсы, и на слабых серверах может добавить нагрузки.

Второй — технологический журнал. Событие TIMED. Фиксирует каждую операцию с длительностью. Из лога можно вычислить APDEX самостоятельно. Минус — нужно парсить текстовые логи, что требует скриптов или сторонних инструментов.

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

Третий вариант — собрать метрики самостоятельно через HTTP-сервис в 1С. При каждом ключевом действии (проведение документа, формирование отчёта, открытие формы) засекать время и отправлять в Prometheus. APDEX считает Grafana. Это самый гибкий вариант, но требует доработки конфигурации.

Какие пороги ставить

Целевой порог T — ключевой параметр. Поставите слишком маленький — APDEX всегда будет низким, и метрика потеряет смысл. Слишком большой — APDEX всегда 1.0, и вы не увидите деградацию.

Наши рекомендации по типам операций:

Открытие формы документа: T = 3 секунды. Пользователь кликнул — форма открылась. Три секунды — ещё нормально. Двенадцать (4T) — уже больно.

Проведение документа: T = 5 секунд. Зависит от сложности. Для простого расходного ордера — многовато. Для реализации с тысячей строк и контролем остатков — в самый раз.

Формирование отчёта: T = 10 секунд. Отчёты тяжелее операций с данными. Десять секунд для оборотно-сальдовой за квартал — приемлемо.

Запись элемента справочника: T = 2 секунды. Здесь всё должно быть быстро. Если запись номенклатуры занимает дольше двух секунд — ищите проблему в обработчиках событий.

Эти пороги — отправная точка. Через месяц эксплуатации скорректируйте по факту. Если APDEX стабильно 0.98 — можно ужесточить. Если 0.6 — либо пороги нереалистичные, либо система реально тормозит.

Рекомендуемые пороги APDEX для разных операций 1С

Как интерпретировать результаты

APDEX полезен не как абсолютное число, а как тренд. Вчера было 0.92, сегодня 0.87 — что изменилось? Обновили конфигурацию? Добавили пользователей? Выросла база?

Три сценария использования:

Мониторинг деградации. APDEX считается каждый час. Строится график за месяц. Видно: в середине месяца просел — закрытие периода. В конце квартала — ещё сильнее. Это нормальный паттерн. Но если APDEX плавно снижается каждую неделю без видимой причины — база растёт, и запросы деградируют. Пора оптимизировать.

Оценка результата оптимизации. До оптимизации APDEX = 0.72. Переписали запрос в отчёте. После — 0.89. Конкретный, измеримый результат. Можно показать руководству, можно включить в отчёт.

Сравнение между базами. Production: APDEX 0.91. Тестовая с тем же железом: APDEX 0.97. Разница — в данных. На тестовой база маленькая, запросы быстрые. На production — нужна оптимизация индексов.

Важно: APDEX не покажет, где именно проблема. Он покажет, что проблема есть. Для диагностики нужен технологический журнал, замер производительности, анализ планов запросов. APDEX — светофор, а не навигатор.

Типичные ошибки при настройке APDEX

Один порог на всё. T = 5 секунд и для открытия справочника, и для формирования годового отчёта. В результате открытие справочника за 4 секунды считается «нормой», хотя пользователь уже нервничает. А отчёт за 15 секунд — «катастрофой», хотя это вполне приемлемо.

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

Не учитывать время суток. В 9:00 все открывают 1С одновременно. APDEX в этот момент просядет — это нормально. Если считать среднее за сутки — пик утра растворится в ночном покое. Лучше считать APDEX отдельно для рабочих часов (9:00-18:00) и отдельно для ночи.

Реагировать на каждое колебание. APDEX упал с 0.93 до 0.89 за один час — это не повод бить тревогу. Может быть, кто-то запустил тяжёлый отчёт. Тревога — когда тренд за неделю стабильно снижается.

График APDEX за месяц: тренды и аномалии

С чего начать

Минимальный план на один день:

Утро: включить ЦКК на сервере 1С. Задать пороги для трёх типов операций: открытие форм (T=3с), проведение (T=5с), отчёты (T=10с).

Обед: проверить, что данные собираются. Открыть дашборд ЦКК, убедиться, что APDEX считается.

Вечер: посмотреть первые результаты. Какой APDEX за рабочий день? Если выше 0.85 — система в порядке. Если ниже — есть над чем работать.

Через неделю у вас будет тренд. Через месяц — понимание паттернов нагрузки. Через квартал — основа для аргументированного разговора с руководством о ресурсах и оптимизации. Не «1С тормозит, нужен новый сервер», а «APDEX снизился с 0.91 до 0.78 за три месяца, основная причина — рост таблицы регистра бухгалтерии, нужна оптимизация запросов в закрытии месяца».