Центр управления производительностью
«Центр управления производительностью» (ЦУП) — инструмент мониторинга и анализа производительности клиент-серверных информационных систем на платформе 1С:Предприятие 8. ЦУП предназначен для оценки производительности системы, сбора подробной технической информации об имеющихся «узких местах» и анализа этой информации с целью дальнейшей оптимизации.
Решаемые задачи
Основные задачи, которые могут быть решены при помощи ЦУП:
- Анализ и интегральная оценка текущей производительности работающей многопользовательской информационной системы:
- Как работает система?
- Имеются ли проблемы производительности?
- Можно ли повысить производительность?
- Сбор и хранение информации о динамике производительности системы:
- Как менялась производительность системы с течением времени?
- Как менялась производительность системы при внесении каких-либо изменений?
- Поиск и анализ «узких мест» в коде конфигурации. Получение детальной технической информации обо всех проблемах производительности, имеющихся в системе с целью дальнейшей оптимизации:
- Какие проблемы производительности имеются в системе и насколько они серьезны?
- Какие проблемы следует решать в первую очередь?
- В чем конкретно заключается каждая проблема?
- Какие объекты метаданных и строки кода конфигурации следует оптимизировать для того, чтобы решить данную проблему?
- Регламентный мониторинг производительности системы с автоматическим контролем значений показателей производительности и реакцией на их изменения.
Эти задачи могут быть решены как для системы, активность в которой эмулируется при помощи Тест-центра, так и для системы, в которой работают реальные пользователи.
Одним из типичных применений «Центра управления производительностью» является анализ производительности и оптимизация работающей многопользовательской информационной системы.
Основные возможности
Основные возможности ЦУП:
Мониторинг технологических показателей производительности работающей клиент-серверной системы:
- оценка производительности системы в реальном времени;
- запись и хранение исторической информации о производительности системы;
- анализ сохраненных данных за произвольный период времени.
Анализ узких мест конфигурации:
- сбор подробной технической информации обо всех узких местах, имеющихся в системе;
- автоматическое получение полного контекста для каждого узкого места на всех уровнях функционирования приложения;
- автоматическое ранжирование узких мест по степени влияния на общую производительность системы.
Создание и редактирование сценариев работы ЦУП:
- гибкий конструктор сценариев, позволяющий настраивать существующие сценарии работы ЦУП или создавать свои собственные.
Основные принципы работы
«Центр управления производительностью» представляет собой независимую информационную базу 1С:Предприятия, которая может подключаться к кластеру серверов 1С:Предприятия для исследования производительности.
Для работы ЦУП не требуется внесения каких-либо изменений в код исследуемой информационной базы либо в состав компонент сервера 1С:Предприятия исследуемой базы.
Начало работы
«Центр управления производительностью» предназначен для сбора и последующего анализа технологических показателей производительности клиент-серверной системы.
Технологические показатели можно разделить на две основные группы:
- оперативные показатели;
- аналитические показатели.
Оперативные показатели по сути являются счетчиками, отображающими текущее состояние системы. В качестве источников данных для этих показателей выступают кластер серверов «1С:Предприятия», сервер СУБД и счетчики производительности операционной системы. Значения этих показателей сразу отображаются на графиках и не требуют дополнительного анализа.
На основании значений показателей производительности, полученных при помощи ЦУП, эксперт может сделать вывод о наличии в системе проблем производительности того или иного вида.
Если в результате такой оценки обнаруживаются симптомы проблем производительности, то необходимо предпринять шаги по повышению производительности системы. ЦУП позволяет собрать так называемые аналитические показатели производительности, которые содержат подробную техническую информацию обо всех проблемах производительности, имеющихся в системе. При помощи этой информации можно провести оптимизацию кода системы и структуры метаданных с целью повышения производительности системы.
Выбор сценария работы
В комплект поставки текущей версии ЦУП включены следующие сценарии:
- «Мониторинг». Мониторинг производительности системы в режиме рального времени:
- подключение к информационной базе в режиме он-лайн;
- мониторинг производительности системы в режиме реального времени;
- запись показателей производительности для дальнейшего анализа (включается вручную).
- «Просмотр». Просмотр сохраненных результатов мониторинга производительности системы.
- просмотр исторической информации по всем записанным показателям производительности системы за любой период в режиме офф-лайн;
- анализ «узких мест» информационной системы с целью ее оптимизации;
Кроме того, пользователь может создавать собственные сценарии работы ЦУП, либо редактировать существующие.
Выбор информационной базы
После выбора режима необходимо выбрать исследуемую информационную базу, либо создать новое подключение к информационной базе.
Мониторинг производительности системы
В режиме мониторинга эксперт может анализировать текущую динамику показателей производительности в режиме реального времени.
Если не включена запись, то значения показателей, выходящие за область видимости формы, «забываются». Для того, чтобы сохранить данные за некоторый период времени, следует включить запись значений показателей производительности. Запись значений может быть включена индивидуально для каждого показателя. Все записанные значения сохраняются в информационной базе ЦУП и будут доступны для последующего анализа.
Мониторинг показателей работающей системы не влияет на ее производительность. Исключением являются показатели из группы «Анализ», в том случае, если включена их запись. См. «Сбор аналитической информации».
Показатели производительности
Центр управление производительностью собирает информацию по следующим основным группам показателей:
- работа запросов к СУБД;
- серверные вызовы;
- ожидания на блокировках данных;
- количество взаимоблокировок;
- количество таймаутов;
- произвольные счетчики ОС.
Показатели производительности, содержащиеся в этих группах являются количественными. Например, значение показателя «максимальное время выполнения запросов» соответствует времени выполнения в секундах самого длительного запроса в данный момент времени. На основании динамики значений количественных показателей эксперт может делать выводы о качестве работы системы: о том, насколько хорошо или плохо работает система, есть ли в ней проблемы производительности и если есть, то какие. Руководство по использованию содержит подробные инструкции по качественному анализу значений количественных показателей. Эти же инструкции даны в статье «Анализ производительности и оптимизация работающей многопользовательской системы».
В отдельную группу вынесены показатели, которые отражают качество работы системы. В отличие от показателей из предыдущих групп, которые являются количественными, показатели этой группы измеряются в процентах (от 0 до 100) и отражают, насколько хорошо или плохо работает система в том или ином ее аспекте.
Текущая версия ЦУП содержит один качественный показатель – проблемы с параллельностью работы.
Если значения показателей свидетельствуют о наличии в системе проблем производительности, то эксперт может собрать дополнительную информацию об «узких местах» системы с целью ее дальнейшей оптимизации. Для анализа доступны следующие аналитические показатели:
- Анализ запросов;
- Анализ ожиданий на блокировках;
- Анализ взаимоблокировок;
- Анализ серверных вызовов;
- Анализ длительных событий.
При наличии в системе проблем производительности ЦУП автоматически соберет всю необходимую информацию, проанализирует ее и отобразит в виде иерархии «узких мест» системы — строк кода и объектов метаданных, являющихся источниками проблем. Затем эта информация может быть использована экспертом для оптимизации кода конфигурации и структуры метаданных.
Для решения этой задачи необходимо выбрать один или несколько показателей из группы «Анализ» и включить их запись. При использовании сценария «Регламентный мониторинг» выбор и запись соответствующих показателей будет выполнена ЦУП автоматически.
После выключения записи аналитических показателей, собранная информация будет обработана и перенесена в информационную базу ЦУП для дальнейшего анализа. Этот процесс может занять длительное время. Имеется возможность выполнять этот разбор в фоновом режиме в отдельном подключении ЦУП.
Для того, чтобы перейти к анализу собранных данных, необходимо остановить мониторинг и запустить сценарий «Просмотр».
ВНИМАНИЕ! Включение записи аналитических показателей может привести к снижению производительности работы исследуемой базы. Но кроме варианта разбора анализа результатов мониторинга в текущей базе ЦУП существует также способ сохранения «сырых» данных результата для последующего разбора в другой информационной системе без анализа «сырых» данных.
Просмотр сохраненных данных
В своей информационной базе ЦУП хранит данные о значениях показателей производительности для всех исследуемых баз за всю историю мониторинга.
Эксперт может выбрать любой интересующий его интервал времени для любой исследуемой базы и проанализировать сохраненные значения показателей производительности. При этом он может произвольно масштабировать просматриваемые данные. Если во время мониторинга записывались аналитические данные по проблемам производительности, то зксперт может перейти к детальному анализу этой информации с целью оптимизации системы:
Анализ проблем производительности и оптимизация системы
Задачи, решаемые при оптимизации системы
В том случае, если в системе одновременно проявляется более одной проблемы (а обычно именно так и бывает), основной трудностью для Эксперта становится правильное определение наиболее критичных проблем.
В системе может одновременно выполняться множество неоптимальных запросов, но не все они одинаково влияют на интегральную производительность системы. Один запрос может выполняться 1-2 раза в день, и даже если время его выполнения более 5 минут, не факт, что именно он является самой большой проблемой. Предположим, что есть другой запрос, который выполняется не более 2 секунд, но многократно — до нескольких тысяч раз в день — и при этом блокирует всех пользователей. В этом случае, решение первой проблемы практически никак не скажется на общей производительности системы, в то время как решение второй сразу же даст ощутимый прирост общей производительности системы.
Таким образом, для успешной оптимизации системы необходимо решить следующие задачи:
- собрать информацию обо всех проблемах, имеющихся в системе;
- установить ранг каждой проблемы, то есть степень ее влияния на интегральную производительность системы.
Это позволит сразу же сконцентрироваться на наиболее критичных проблемах и получить максимальный эффект (прирост интегральной производительности) за минимальное время.
Другой сложностью, возникающей при решении задач оптимизации, является поиск контекста проблемы — строки кода конфигурации и/или объекта метаданных, которые необходимо оптимизировать для того, чтобы решить данную проблему.
Например, мы можем обнаружить неоптимально работающий запрос на уровне СУБД. Для того чтобы его оптимизировать, необходимо знать, какой код конфигурации привел к генерации этого запроса, какие объекты метаданных в нем участвуют, какова структура индексов и т. д. Только имея эту информацию, можно будет определить причину проблемы и найти способ оптимизации — переписать запрос, добавить дополнительный индекс в объект метаданных и т. п.
Все эти задачи автоматически решаются при сборе аналитической информации при помощи ЦУП.
Общий подход к анализу проблем в ЦУП
При сборе информации об узких местах в конфигурации ЦУП автоматически решает все три перечисленные выше задачи:
- собирает полную информацию по всем проблемам производительности;
- восстанавливает полный контекст каждой проблемы, то есть «привязывает» ее к определенным строкам кода конфигурации и объектам метаданных;
- автоматически ранжирует узкие места и располагает их в порядке убывания влияния на общую производительность системы.
При сборе информации о проблемах, ЦУП «привязывает» каждую проблему к строкам конфигурации и объектам метаданных, которые являются ее источниками. При отображении проблем ЦУП заходит с другой стороны: показывает источники проблем, автоматически сортируя их по убыванию веса проблем, которые к ним относятся. Таким образом, эксперт получает полную информацию обо всех источниках проблем — узких местах в конфигурации системы.
Имеются две возможности оптимизировать систему: изменить код конфигурации (оптимизировать запрос и т. п.) либо изменить структуру метаданных конфигурации (добавить недостающий индекс и т. п.). Поэтому ЦУП отображает узкие места системы в двух независимых разрезах:
- по коду конфигурации;
- по объектам метаданных.
Затем эксперт анализирует узкие места, указанные ЦУП, в порядке убывания веса. Если в системе наблюдаются серьезные проблемы производительности, то узкие места, как правило, будут подчиняться правилу «20 на 80». То есть 20% всех узких мест системы, будут создавать 80% проблем производительности. Соответственно, эксперт будет иметь возможность быстро устранить основные проблемы и значительно поднять производительность системы за относительно короткое время.
ЦУП предоставляет детальную техническую информацию по каждому узкому месту, обнаруженному в системе. Руководство по использованию ЦУП содержит подробные инструкции по анализу конфигурации исследуемой базы и по методикам оптимизации кода и структуры метаданных конфигурации для каждого вида проблем.
Очень часто для устранения проблемы достаточно знать строку кода, которая является узким местом. Типичные причины проблем производительности хорошо изучены и описаны, поэтому эксперт имеет возможность устранить узкое место просто анализируя код конфигурации и структуру метаданных. Более детальная информация по методам анализа и оптимизации содержится в руководстве пользователя и по следующим ссылкам:
Анализ проблем в разрезе кода конфигурации
Дерево анализа данных о проблемах в разрезе кода конфигурации имеет следующий вид:
На первом уровне дерева представлены основные узкие места в коде конфигурации.
Анализ проблем в разрезе структуры метаданных
Дерево анализа данных о проблемах в разрезе структуры метаданных имеет следующий вид:
На первом уровне дерева представлены основные узкие места в разрезе объектов метаданных конфигурации.
Детальная информация по проблемам производительности
Большая часть проблем может быть решена путем анализа кода и структуры данных, без анализа подробной технической информации по проблеме. В некоторых случаях (например при анализе взаимоблокировок) бывает необходимо анализировать детальную информацию по проблеме. Эту информацию так же предоставляет ЦУП.
Детальная информация о медленных запросах
ЦУП предоставляет подробную техническую информацию обо всех проблемных (медленных) запросах, которые выполнялись в системе. Информация включает в себя:
- дату и время выполнения запроса;
- имя пользователя, выполнившего запрос;
- длительность запроса;
- полный стек вызова строк кода конфигурации;
- полный текст запроса к СУБД на языке SQL;
- полный текст запроса к СУБД на языке SQL с переводом таблиц и полей в термины метаданных 1С:Предприятия.
Подробная информация об ожиданиях на блокировках
ЦУП предоставляет подробную техническую информацию обо всех ожиданиях на блокировках данных, которые наблюдались в исследуемой системе. Информация включает в себя:
- дату и время окончания ожидания;
- длительность ожидания;
- полные данные по заблокированному запросу (аналогично детальной информации по запросам);
- полные данные по блокирующему запросу (аналогично детальной информации по запросам);
- информацию о заблокированном ресурсе (объекте метаданных).
Подробная информация о взаимоблокировках
ЦУП предоставляет подробную техническую информацию обо всех взаимоблокировках (неразрешимых конфликтах блокировки) данных, которые наблюдались в исследуемой системе. Информация включает в себя:
- дату и время возникновения взаимоблокировки;
- список всех процессов (пользовательских сессий), которые попали во взаимоблокировку;
- последовательность действий (установки блокировок) для каждого процесса. При этом для каждой блокировки указывается:
- запрос, вызвавший установку блокировки (аналогично детальной информации по запросам);
- заблокированный ресурс;
- режим блокировки;
- состояние блокировки.
Детальная информация о длительных серверных вызовах
Длительность вызова – позволяет оценить отклик системы с точки зрения пользователей. При интерактивной работе пользователя значительная часть операций (таких как открытие форм справочников и документов, запись и проведение документов и т. п.) выполняется с использованием одного или нескольких серверных вызовов. В большинстве сценариев длительность вызова более одной секунды воспринимается пользователем как медленная работа, а вызовы длительностью 20 секунд и более – как зависание клиентского приложения (за исключением случаев, когда вызовы не связаны работой клиентского приложения, а, например, отражают факт работы регламентных фоновых заданий).
ЦУП позволяет получить информацию о таких вызовах, а также всю необходимую дополнительную информацию, например:
- время выполнения вызова;
- длительность данного выполнения вызова;
- пользователь «1С:Предприятия», при работе которого был выполнен серверный вызов;
- контекст вызова (строка кода конфигурации, из которой он был выполнен).
Детальная информация о длительных событиях
Сценарий предназначен для расследования проблем, связанных с медленным выполнением какой-либо пользовательской операции (например, проведение документа), и при этом заведомо известно, что проблемы не связаны с ожиданием на блокировках.
Список длительных событий представляет собой два связанных списка:
- первый список – длительные события, в котором события группируются по контексту и имеют следующие поля: время события, тип события,длительность события, пользователь «1С:Предприятия», номер ошибки;
- второй список – значения реквизитов события, выбранного в первой группе.
Также возможно проводить анализ длительных событий в процессе работы информационной системы.
Этот сценарий ориентирован на выявление проблем, происходящих в процессе эксплуатации информационной системы. Среди таких проблем могут быть длительные серверные вызовы, длительные события установки блокировок, длительные запросы. При этом под термином длительные понимаются события, которые выполняются десятки секунд и более. В частности, наличие таких событий указывает на то, что пользователи могут получать ошибки установки блокировок и сталкиваться с зависаниями клиентских приложений.