1с замер производительности как использовать
Перейти к содержимому

1с замер производительности как использовать

  • автор:

Панель « Замер производительности »

Панель Замер производительности показывает результаты замера производительности, выполненного в процессе отладки.

Эта панель открывается автоматически после завершения замера (когда отжата кнопка Замер производительности в командной панели основного окна). При этом результаты замера автоматически сохраняются в рабочей области и могут быть использованы для просмотра в будущем, сравнения или для экспорта в другой проект. Каждый замер имеет стандартное имя, которое вы можете изменить.

Также вы можете открыть эту панель самостоятельно из главного меню основного окна, нажав Окно > Показать панель > Прочие… > 1С:Предприятие > Замер производительности .

Структура информации в панели

Стандартно результаты замера производительности представлены в виде списка выполнявшихся операторов, в котором, помимо оператора (колонка Строка ), указаны модуль (колонка Модуль ) и номер строки (колонка № строки ), в которой расположен этот оператор.

Помимо этого вы можете отобразить результаты замера в более общем виде — в виде списка методов, которые выполнялись. Этот список вы можете дополнительно сгруппировать по модулям.

Условные обозначения

Код выполняется на клиенте. В процессе выполнения кода происходит обращение к серверу Код выполняется на сервере. В колонке Чистое время (с) цветом и шириной фона обозначается доля (процент), которую занимает выполнение данной строки в общем времени замера. Стандартное имя текущего замера производительности. Состоит из имени проекта (ДемоУП_14), даты замера (15:44:11, Пт, 30 авг 2019) и предметов отладки (Тонкий клиент). К стандартному имени вы можете добавить свой префикс. Из выпадающего списка вы можете выбрать один из имеющихся в рабочей области замеров производительности для того, чтобы показать его результаты в панели.

Колонки

Модуль Модуль, которому принадлежит строка кода. Эта колонка показывается, если результаты замера представлены в виде таблицы операторов. № строки Номер строки в модуле. Эта колонка показывается, если результаты замера представлены в виде таблицы операторов. Строка Строка кода, которая выполнялась. Эта колонка показывается, если результаты замера представлены в виде таблицы операторов. Метод Метод, который выполнялся. Эта колонка показывается, если результаты замера представлены в виде списка методов. Кол-во вызовов Сколько раз выполнялась данная строка кода за время замера. Полное время (с) Полное время выполнения строки кода. Оно складывается из времени вызова метода (не показывается в таблице) и чистого времени выполнения оператора, которое показывается в колонке Чистое время (с) . Чистое время (с) Чистое время выполнения оператора (без учета времени вызова процедуры или функции). Также в этой колонке показывается доля (в процентах), которую заняло выполнение этого оператора в общем времени замера. Клиент В этой колонке пиктограммой отмечаются строки, выполнявшиеся на клиенте. Сервер В этой колонке пиктограммой отмечаются строки, выполнявшиеся на сервере. Вызов сервера В этой колонке пиктограммой отмечаются строки, выполнение которых привело к вызову сервера.

Клики мышью

Командная панель

Переименовать результат Позволяет добавить произвольную строку в начало стандартного имени замера. Сравнить с. Позволяет сравнить текущий замер производительности с другим замером. Импорт результатов замеров Импортирует результаты замеров производительности в 1C:EDT . Экспорт результатов замеров Экспортирует результаты замеров производительности из 1C:EDT . Очистить результаты Очищает панель Замер производительности и историю замеров. Развернуть все Раскрывает все уровни иерархии в панели. Свернуть все Сворачивает все уровни иерархии, существующие в панели, до первого уровня. Группировать методы по модулям Группирует методы по модулям в том случае, если результаты замера представлены в виде списка методов. Результаты клиента Если нажата, показываются операторы, выполняемые на клиенте и, возможно, выполняемые на сервере (если нажата ). Если отжата — показываются только операторы, выполняемые на сервере. Результаты сервера Если нажата, показываются операторы, выполняемые на сервере и, возможно, выполняемые на клиенте (если нажата ). Если отжата — показываются только операторы, выполняемые на клиенте. Табличное представление Результаты замера представляются в виде таблицы выполнявшихся операторов с колонками Модуль , № строки и Строка . Список методов Результаты замера представлены в виде списка выполнявшихся методов. Вы можете сгруппировать этот список по модулям.

APDEX и замеры производительности 1С

В продолжение статьи про наше использование 1С Fresh мы расскажем как учимся следить за производительностью и скоростью работы нашей инсталляции.
image

Введение

В любой компании, которая выпускает какой-нибудь продукт, существует отдел контроля качества. Обычно этот отдел проверяет продукцию на выходе, именно то, что попадает потребителю в руки. Если компания предоставляет услуги, то существуют специальные люди, которые обзванивают клиентов и узнают, все ли им понравилось. После этого, исходя из собранной статистики, вносятся какие-либо изменения в процесс и все повторяется по кругу. Хорошо, конечно, если такие отделы и люди существуют в компании. В нашем мире чаще всего либо ты пользуешься тем, что есть, либо ищешь другие компании и никто за это не переживает.

У нас в Кнопке пользователями продукта 1C Fresh в первую очередь являются наши бухгалтеры. Чем выше стабильность и скорость работы 1С, тем выше скорость работы бухгалтера. А это значит, что клиенты, которые обслуживаются в Кнопке будут быстрее получать расчеты по налогам, авансу, зарплате и т.д.

Существует много различных вариантов оценки производительности (или качества) IT — систем и софта. Для оценки производительности нашего 1С Fresh мы используем многим известную методику APDEX.

Apdex. Справка

Apdex (Application Performance Index) — индекс производительности приложений. Открытый международный стандарт, разработанный с целью формирования объективной оценки показателей производительности корпоративных информационных систем.

Apdex служит для измерения пользовательской удовлетворенности работой системы. Этот опыт может быть представлен по шкале от отлично до неудовлетворительно.

Методика состоит из следующих этапов:

— получение списка ключевых операций;
— определение приоритета каждой операции;
— определение целевого времени для каждой операции;
— сбор информации о времени выполнения каждой ключевой операции;
— получение оценки на основе собранной информации.

По завершению всех перечисленных этапов становится возможным интерпретировать полученный результат в терминах качественной оценки. Про Apdex есть информация на сайте 1С, откуда мы собственно и черпали знания.

Реализация. Теория

Первым этапом при замере производительности по методике Apdex, является выделение списка ключевых операций. Проведя некоторую аналитику совместно с нашими бухгалтерами, мы выделили ряд операций, которые чаще остальных используются в работе с 1С.

Второй этап — определение приоритета каждой операции. Чем выше приоритет, тем важнее производительность операции. Правильно расставленные приоритеты позволят в дальнейшем оценить серьезность проблем с производительностью в системе, и правильно определить приоритеты работ по оптимизации.

Следующий этап самый интересный: определение целевого времени для каждой операции. Т.е. необходимо подобрать такое время выполнения указанной операции в секундах (Т), которое удовлетворит клиента, т.е. нашего бухгалтера. По каждой операции мы субъективно выделили Т и записали в нашу таблицу.

Операция Приоритет Т
Проведение поступление товаров и услуг 3 1
Общее время запуска приложения 2 3
Формирование отчёта «карточка счёта» 6 4
Формирование ОСВ 4 3
Формирование ОСВ по счёту 5 3
Проведение реализация товаров и услуг 1 3

Следующий этап, это сбор информации о времени выполнения каждой операции. 1С позаботились об этом и учли такой функционал в своих продуктах. Замеры мы снимали с конфигурации Бухгалтерия Предприятия 3.0. Для того, чтобы 1с начала замерять время выполнения операций, необходимо установить константу «Выполнять замеры производительности». Проделать это нужно для каждой ИБ, работающей в модели сервиса.
После этого все замеры времени выполнения пользовательских операций будут записываться в регистр сведений «Замеры времени», откуда эту информацию можно получать различными способами.

image

И, наконец, пятый этап, получение оценки APDEX на основании собранных результатов.

Формула для вычисления APDEX: APDEX = (NS + NT/2)/N

N — общее количество выполнений данной операции;
NS — количество выполнений с временем отклика от 0 до Т;
NT — количество выполнений с временем отклика от T до 4T.

Результаты расчетов добавим в таблицу:

Операция Приоритет Т N NS NT APDEX
Проведение поступление товаров и услуг 3 3 387 320 34 0,67
Общее время запуска
приложения
2 5 357 185 164 0,68
Формирование отчёта
«карточка счёта»
6 4 99 94 5 0,84
Формирование ОСВ 4 4 224 190 31 0,95
Формирование ОСВ
по счёту
5 4 732 559 158 0,88
Проведение реализация товаров и услуг 1 4 387 353 34 0,67

Методика APDEX позволяет интерпретировать полученные числовые значения коэффициента в терминах качественных оценок. Для этого предусмотрена Шкала APDEX, которая содержит следующие диапазоны значений:

  • От 0.00 до 0.50 — неприемлемо
  • От 0.50 до 0.70 — неудовлетворительно
  • От 0.70 до 0.85 — удовлетворительно
  • От 0.85 до 0.94 — хорошо
  • От 0.94 до 1.00 — отлично

Реализация. Практика

Для мониторинга производительности и доступности сервисов, мы используем Zabbix и надстройку Grafana. Для всех наших сервисов, в том числе 1C Fresh, мониторятся следующие показатели: нагрузка на CPU каждого сервера, количество свободной оперативной памяти, глубина очереди дисковой подсистемы (нагрузка операциями дискового ввода/вывода), количество свободного места на дисках, количество операций INSERT, UPDATE, DELETE в секунду на сервере СУБД.

image

image

Для отслеживания оценки Apdex мы не стали придумывать ничего нового и добавили отображение оценки в Zabbix. Для того, чтобы Zabbix получал данные по времени выполнения операций из 1с, их нужно сначала куда-то выгрузить. Для этого мы используем промежуточную базу PostgreSQL. Выгружать данные из 1С в базу можно несколькими способами. Мы реализовали этот механизм через регламентные задания.

image

Каждое регламентное задание можно запускать по расписанию:

image

В процессе запуска регламентное задание порождает фоновое задание, которое и выполняет реальную обработку. Регламентное задание может выполняться от имени заданного пользователя и имеет возможность перезапуска (например, в случае непредвиденного завершения работы).

Для выгрузки мы будем использовать следующие значения регистра:

1. Наименование базы прикладной конфигурации. Поскольку в технологии 1C Fresh предполагается использование большого количества баз и прикладных решений, нам необходимо различать замеры для каждой из них
2. Наименование операции.
3. Время начала операции
4. Время выполнения операции
5. Область данных, в которой выполнялась операция
6. Пользователь, выполнивший операцию

Фоновое задание представляет собой процедуру:

Выгружая таким образом данные из 1С, нам теперь не составит труда обрабатывать это в Zabbix’e. На примере операции “Общее время запуска приложения” в ИБ ea_01 сформируем sql-запрос к базе:

На первом шаге создадим конфигурационный файл для агента, который будет выполняться на сервере СУБД где хранятся данные замеров.

Использование параметров даст нам возможность использовать этот конфигурационный файл для различных информационных баз и замеряемых операций.

На втором шаге мы создадим шаблон в Zabbix, где будем описывать необходимые нам макросы:

image

Затем привязываем этот шаблон к нужному узлу сети и переопределяем индивидуальные параметры для макросов.

image

Повторяя эти действия для каждого измеряемого параметра, мы получим постоянный мониторинг производительности по методике APDEX.

image

Теперь, почти в режиме реального времени, мы видим оценку Apdex по нашим базам 1cFresh. Но мы пошли дальше.

Настройка реакции на падение производительности

Кроме автоматического мониторинга показателей мы настроили также автоматическую реакцию на падение производительности по какому-либо параметру. Zabbix предоставляет большой простор для реализации различных реакций через скриптовые инструменты.

Мы будем реагировать на падение производительности включением технологического журнала «1С: Предприятие».

Сценарий достаточно прост:

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

После разбора проблемы, либо восстановления производительности, проводятся обратные действия.

Производительность выходит на нормальный уровень → срабатывает триггер → удаляется блок настроек технического журнала.

Создадим триггер, в котором прописываем условия срабатывания. В нашем случае это падение оценки Apdex ниже 0.6

image

Затем создаем действие, на срабатывание триггера

image

В этом действии задаем команду

image

По собранному ТЖ можно анализировать, что послужило падению производительности, какие были ошибки, что делал пользователь в данный момент, какой пользователь и т.д. Сопоставляя данные ТЖ и мониторинга Zabbix можно делать выводы и разрабатывать планы по устранению проблем, оптимизации железа, оптимизации работы пользователя.

Благодаря мониторингу и оценке производительности, мы смогли выйти на показатель 99% доступности нашей инсталляции 1C Fresh. Наши показатели оценки Apdex пока еще не достигли 1.0, но мы уже над этим работаем 🙂

Замер производительности

Режим замера производительности позволяет разработчику оценивать скорость работы как всей конфигурации в целом, так и отдельной ее части. В этом режиме измеряется частота использования конкретных участков кода и скорость их выполнения.

Подобный анализ помогает выбирать наиболее оптимальный способ программной реализации алгоритмов работы системы, а также определять пути для повышения быстродействия прикладного решения.

Результат замера производительности представляет собой список ссылок на конкретные строки модуля, с указанием частоты их выполнения и длительности (абсолютного времени выполнения и относительного, в процентах от общего времени выполнения замеряемого участка). Также в списке отмечаются строки кода, исполнявшиеся на клиенте, сервере и строки кода, приводящие к вызову сервера:

Замер производительности

Результаты замера можно видеть также непосредственно в окне с исходным текстом модуля. Щелчком мыши на выбранной строке списка можно перейти к тексту модуля, для которого на отдельном поле будет отображено количество вызовов и относительное время выполнения каждой строки:

Замер производительности

Результаты замера могут быть отобраны по месту исполнения (клиент, сервер, клиент и сервер), а также отсортированы по любой из колонок, например, по количеству вызовов строки:

Замер производительности

Кроме этого, режим замера производительности позволяет производить выборочное суммирование строк замера, для получения суммарных характеристик выполнения некоторых строк:

Замер производительности

Дополнительной возможностью является включение в замер или исключение из замера времени выполнения вызываемых процедур и функций. Использование этой возможности позволяет получать картину замера, максимально приближенную к реальной, в случае, когда из замеряемого модуля вызываются внешние по отношению к нему, процедуры.

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

Добавить комментарий

Ваш адрес email не будет опубликован.