Если пользователи жалуются, что 1С часто виснет, долго формирует отчеты, медленно проводит документы, значит, системе требуется оптимизация.
С чего ее начать? Некоторые «специалисты» пытаются с ходу устранить проблему, подбирая решение «методом тыка» – вдруг какой-то из вариантов выстрелит:
- «Сейчас на форуме почитаю…»
- «Надо обновить 1С. После этого станет лучше.
- «У нас железо старое. Давайте новое оборудование купим!»
- «А давайте посмотрим на фазу луны…» и т. д.
Эти идеи, может, и сработают, но это не точно :) А вот ресурсы, иногда огромные, будут потрачены наверняка.
В общем, профессионалы так не делают :)
Любую оптимизацию и ускорение работы 1С нужно начинать не с поиска решений, а с анализа текущей ситуации, точнее — с замеров производительности.
Пока нет замеров — нет фактов: есть только субъективные оценки пользователей «быстро» или «медленно».
Но только на них опираться нельзя: мы можем ускорить выполнение операций, а пользователям все равно будет «медленно». И без замеров, сделанных до оптимизации, мы не можем подтвердить их слова или доказать обратное.
Итак, замеры.
Чаще всего замеры производительности проводят с помощью APDEX.
Встречается мнение (даже среди опытных экспертов и некоторых “гур”), что методика подустарела и у нее есть куча недостатков. И можно долго спорить: APDEX – вчерашний день или живее всех живых :)
Мы будем смотреть на практику – его используют в подавляющем большинстве задач оптимизации 1С, он безусловно полезен – и полноценной замены ему пока нет.
В этой статье разберем, что такое APDEX и как эта методика помогает отслеживать производительность 1С. О ее минусах тоже расскажем :)
Методика APDEX: что это такое и как она работает
Для того чтобы оптимизировать систему, необходимо знать:
- какие операции нуждаются в ускорении,
- насколько их нужно ускорить,
- как понять, во сколько раз выросла их скорость,
- какие операции оптимизировать в первую очередь,
- как оценить удовлетворенность пользователей скоростью работы 1С
- и т. д.
Чтобы ответить на все эти вопросы, была придумана методика APDEX.
APDEX (Application Performance Index) — это индекс производительности, который отражает, насколько пользователи удовлетворены скоростью работы информационной системы.
Важно понимать, что речь идет только о скорости, а не о функциональности или удобстве программы.
Методика APDEX состоит из следующих шагов:
- Определение списка ключевых операций. Ключевые операции являются индикаторами скорости работы системы.
- Определение целевого времени ключевых операций. Для каждой операции устанавливается целевое время — время выполнения, которое полностью устраивает пользователя.
- Определение приоритета ключевых операций.
- Сбор информации о реальном времени выполнения ключевых операций. Фиксируется время выполнения каждой ключевой операции.
- Вычисление APDEX. Рассчитывается индекс производительности.
Разберем каждый шаг по отдельности.
Шаг № 1. Определение списка ключевых операций
Ключевая операция — это такая операция в информационной системе, которая критически важна для нормального функционирования организации.
Типичными ключевыми операциями являются:
- проведение документов,
- формирование отчетов,
- выполнение различных обработок,
- открытие форм.
Пример
В магазине ключевой операцией будет проведение документов Продажа товара. Если они будут проводиться медленно, это может сказаться на бизнесе и привести к огромным очередям у касс, недовольству покупателей и раздражению кассиров.
Ключевая операция необязательно выполняется много раз в день. Это может быть и редкое, но критически важное действие: расчет себестоимости, восстановление последовательности и т. д.
Важно правильно выявить ключевые операции — по ним мы будем определять скорость работы всей системы.
Не стоит делать длинный список ключевых операций. Лучше начать максимум с 10–15 ключевых операций и постепенно, по мере решения проблем, добавлять новые.
Шаг № 2. Определение целевого времени
Целевое время — это время выполнения ключевой операции, которое устраивает заказчика.
В формуле расчета APDEX целевое время обозначается буквой Т.
Как ориентир можно использовать следующие значения для типичных ключевых операций:
Таблица 1. Целевое время типичных ключевых операций
Как правило, выполнение операций за указанное в таблице время не вызывает дискомфорта у пользователей.
Возможна ситуация, когда документ может содержать как 10 строк, так и 1 000. Естественно, требовать одинакового времени проведения в этом случае будет неправильно. В такой ситуации необходимо разбить одну ключевую операцию на несколько и к каждой из них определить разные требования по времени выполнения.
Например, документ, в котором содержится до 100 строк, — это одна ключевая операция с одним целевым временем, от 100 до 1000 строк — другая ключевая операция с другим целевым временем и так далее. Все эти пороги необходимо обязательно согласовать с заказчиком или пользователями.
Важно понимать: если выполняется групповая обработка чего-либо, то вся групповая обработка — это одна ключевая операция. Соответственно и целевое время определяется для выполнения всей обработки.
Пример
Надо восстановить последовательность и перепровести 5 000 документов за 1 час. В этом случае ключевая операция — это выполнение всей обработки, а не проведение каждого отдельного документа. Значит целевое время будет 1 час, а не 0,72 сек. на один документ.
Это имеет большое значение для расчета APDEX, т. к. выполнение обработки мы можем ускорить, например, распараллеливанием, а ускорить проведение одного документа до 0,72 сек. гораздо сложнее.
Шаг № 3. Определение приоритета
Приоритет ключевой операции — это степень важности ключевой операции с точки зрения деятельности организации. Самой важной ключевой операции присваивается приоритет 1, менее важной — 2 и т. д. Таким образом, приоритет помогает выстроить порядок, в котором будет производиться оптимизация системы.
Приоритет должен быть уникальным — не может быть двух операций с приоритетом 1.
В методике APDEX приоритет следует определять сразу после выявления ключевых операций, но на практике приоритет чаще всего устанавливается после выяснения целевого времени.
Заказчику часто бывает сложно распределить приоритет среди ключевых операций. Ему кажется, что все важно и нужно прямо сейчас. Чтобы успокоить клиента, стоит объяснить ему, что система обновляется не каждый день, поэтому в следующее обновление попадет оптимизация сразу нескольких операций. Расстановка приоритетов просто поможет понять, каким именно операциям следует уделить внимание в первую очередь.
При этом не всегда операции оптимизируются по приоритету. Все зависит от ситуации.
Таблица 2. Приоритет операций
Например, в случае, описанном в таблице 2, разумнее сначала приступить к оптимизации второй операции, так как у первой операции APDEX близок к норме, а вторая выполняется очень медленно.
Шаг № 4. Сбор информации о реальном времени выполнения
После определения целей и приоритетов необходимо собрать информацию о фактическом времени выполнения ключевых операций. Для этого можно использовать как инструменты фирмы 1С, например, подсистему Оценка производительности из Библиотеки стандартных подсистем (БСП), так и альтернативные инструменты, например, облачный сервис контроля производительности по методике APDEX.
При желании можно написать свой собственный инструмент для измерения времени выполнения операций.
В следующей статье мы разберем, как работать с подсистемой Оценка производительности.
Шаг № 5. Вычисление APDEX
На основе собранных данных вычисляется APDEX. Для расчета необходимо выбрать период, за который будет рассчитано значение. В указанных выше инструментах есть возможность просматривать APDEX за произвольный период времени. Чаще всего APDEX рассматривается минимум в разрезе дня.
Рассчитанное значение APDEX нигде не хранится, так как при наличии исходных данных его всегда можно рассчитать заново, при необходимости меняя целевое время.
Индекс производительности рассчитывается по следующей формуле:
APDEX = (NS + NT / 2) / N
Где:
NS — число выполнений со временем от 0 до Т (Т — целевое время операции)
NT — число выполнений со временем от T до 4T
N — общее число выполнений операции
Чем больше число выполнений операции, тем точнее APDEX. Желательно, чтобы замеров было более 100, иначе рассчитанное значение может быть не показательным.
APDEX может принимать значения от 0 до 1.
Если APDEX = 0, значит, пользователи не могут работать, так как система не отвечает на запросы.
Если APDEX = 1, значит, пользователи полностью довольны скоростью работы системы.
Таблица 3. Диапазон значений APDEX
Пример
Нужно подсчитать APDEX ключевой операции Формирование отчета Остатки по складам за 1 неделю. Целевое время операции равно 1 сек.
За неделю операция выполнялась 181 раз, 122 раза операция выполнялась не более 1 сек. и 47 раз от 1 до 4 сек.
Подставим значения в формулу:
APDEX = (122 + 47 / 2) / 181 = 0,80
Значение 0,80 соответствует оценке «плохо», т. е. пользователи недовольны скоростью формирования этого отчета.
Как только APDEX станет равен значению 0,85 или выше, цель оптимизации будет достигнута.
Зная APDEX каждой ключевой операции, можно получить APDEX всей информационной системы. Для этого используется приведенная выше формула, но в качестве переменных выступают суммы значений параметров N, NS и NT. Для Таблицы 4 общий APDEX рассчитывается так:
APDEX = (333 + 47 / 2) / 392 = 0,90
Таблица 4. APDEX информационной системы
Недостатки методики APDEX
Как и в любой другой методике, у методики APDEX есть минусы.
Она плохо работает, если число замеров мало. За минимальное значение, которое обеспечивает корректную оценку, можно взять 100 замеров. Также наличие резких «всплесков» в замерах слабо отображается в APDEX.
Пример
Было 100 замеров некоторой операции. Целевое время равно 3 секундам. 85 операций было выполнено за время от 1 до 3 секунд, остальные операции выполнялись свыше 600 секунд. Таким образом:
NS = 85 (число выполнений со временем от 0 до Т, где Т — целевое время операции)
NT = 0 (число выполнений со временем от T до 4T. Целевое время равно 3 сек., значит 4T = 12 сек. Операций, которые бы выполнялись от 3 до 12 секунд, не было, поэтому NT = 0)
N = 100 (общее число выполнений операции)
В результате получаем следующий APDEX:
APDEX = (NS + NT / 2) / N = (85 + 0 / 2) / 100 = 0,85
Это значение APDEX соответствует оценке «хорошо». Но при этом 15 операций выполнялись непозволительно медленно.
При использовании методики следует понимать, что главным все-таки является мнение пользователей. Если они не довольны скоростью работы, значит, либо было ошибочно выбрано время T, либо неправильно встроен код замера. В таких случаях необходимо поднимать минимальный порог APDEX, например, производить оптимизацию, пока APDEX не достигнет значения 0,90 или выше.
В любом случае необходимо измерять и собирать длительность выполнения ключевых операций. Имея эти данные, можно рассчитать индекс производительности по любой формуле.
Что дальше?
В следующей статье мы продолжим погружаться в тему и разберем, как работать с подсистемой «Оценка производительности»:
- как использовать подсистему оценки производительности в типовых конфигурациях;
- как внедрить эту подсистему в конфигурацию;
- как настроить замер времени выполнения операции;
- как посмотреть APDEX с помощью отчета Оценка производительности.
Все этапы оптимизации 1С
Оценка производительности – это только один из шагов к стабильной и быстрой работе систем на 1С:Предприятие 8.3.
Весь процесс оптимизации можно разделить на три больших этапа:
- Оценка.
- Диагностика.
- Оптимизация.
Все эти этапы подробно разбираются на курсе Ускорение и Оптимизация 1С. Базовый курс. А для участников первого потока еще и действует хорошая скидка – записывайтесь! :)
- 16 учебных часов видео
- 50 практических заданий
- 3 месяца поддержки и доступа к ответам на вопросы
- Пожизненный доступ к видео-урокам и учебным материалам
Тогда фразу “время выполнения, которое полностью устраивает пользователя” нужно из текста статьи исключить. Не может одинэска открываться мгновенно. Это не браузер. “Целевое время — это время выполнения ключевой операции, которое устраивает заказчика.” Из той же серии. Либо заказчик принимает базовые целевые времена открытие формы 1 сек, формирование отчета 5 сек, либо мы ничем не можем помочь.
На фразу заказчика “Хочу мгновенно…” всегда можно ответить “Ок, с вас стотыщмильенов…”, а после этого переводить разговор в конструктивное русло.
Вот выдержка с сайта 1С по поводу целевого времени
Признаю что заказчик знает за сколько времени должна проводиться реализация. Если долго оформлять документы, то это будет раздражать клиентов.
Но вот спрашивать у пользователя про время точно бесполезно. Если отчет по складам формируется 5 минут, то пользователь может попросить чтобы отчет формировался 20 минут. Скажет: за это время я успею кофе попить и покурить.
Главная мысль в том что, решение о целевом времени не должно быть односторонним, это обоюдное решение, иначе и программист может решить что отчет за 20 мин. это нормально, лишь бы сдать проект побыстрее.
Как это происходит на практике? Вы подходите к бухгалтерам с вопросами: как вам работается в 1С? Все ли устраивает в плане скорости?
Примерно так и происходит, только общение не всегда идет с линейными сотрудниками, это могут быть начальники соответствующих отделов например.
“Определение целевого времени ключевых операций. Для каждой операции устанавливается целевое время — время выполнения, которое полностью устраивает пользователя.” Вот это мне непонятно. Пользователь не знает возможностей 1С, поэтому не может сказать сколько секунд должен формироваться отчет. Пользователь может захотеть чтобы у него отчет по складам формировался мгновенно. И что с этой информацией делать? Прежде всего, можно ли добиться такой скорости от отчета складам?
Именно поэтому даются базовые целевые времена для разных операций, на которые можно ориентироваться, для отчета это как правило 5 секунд +- в зависимости от отчета.