Содержание

Причины низкой производительности ADVANTA и их устранение


Для кого эта статья

Статья адресована сотрудникам, ответственным за использование ИСУП ADVANTA, которая установлена на своих ресурсах.

Здесь содержатся:

  • рекомендации;
  • описания по настройкам для известных параметров, влияющих на скорость работы Системы;
  • способы сбора данных о производительности, которые могут быть запрошены сотрудниками технической поддержки разработчика ИСУП ADVANTA.

ТОП-5 причин в инфраструктуре

  1. Ошибки конфигурации ПО ADVANTA при его установке или обновлении.
  2. Ошибка конфигурации сервера Баз Данных MS SQL.
  3. Недостаточная производительность серверной части.
  4. Качество связи между приложением и БД.
  5. Другое программное обеспечение и настройки сервера.

Читайте ниже о том, как их устранить.

Ошибки конфигурации ПО ADVANTA

1. Установлены не все версии дополнительного ПО для работы ADVANTA, данное ПО не обновляется с достаточной периодичностью.

Пояснение: для работы ПО ADVANTA необходимо установить библиотеки расширений MS .Net Framework, Visual C++ Redistributable x64 и x86, ASP и др. согласно инструкции тут.

Рекомендация: произвести установку дополнительного ПО согласно инструкции.

2. Установка ПО ADVANTA на сервер IIS, который ранее был сконфигурирован под другие приложения с параметрами отличных от стандартных. Применение не стандартных настроек IIS ИТ персоналом. Как вариант IIS – сервер мог быть ранее сконфигурирован через Групповые политики Active Directory.

Диагностика: утилита GPRESULT с параметром /H GPReport.html. Для запуска нужны права Администратора.

Рекомендация: произвести установку ПО ADVANTA на вновь установленный сервер. Вывести сервер из-под действия Групповых политик, влияющих на конфигурацию IIS-сервера.

3. Ошибки в конфигурационном файле client.config, допущенные при установке ПО ADVANTA или при обслуживании, обновлении.

Пояснение: Ошибки или отсутствие параметров register в секции container могут привести к частичной недоступности функционала ПО ADVANTA, так и к полному отказу Системы.

Решение:

  1. Привести конфигурационный файл client.config к стандартному виду.
  2. При работе с БД Postgres привести конфигурационном файл client.config в соответствии с инструкцией здесь.

4. Несоответствие аппаратно-программной части пользовательской станции рекомендациям, указанным на официальном сайте здесь.

Ошибка конфигурации сервера Баз Данных MS SQL

1. Используется единый сервер для размещения БД и ПО ADVANTA без дополнительной настройки производительности использования ОЗУ.

Пояснение: Роли сервера приложений ADVANTA и БД MS SQL рекомендуется размещать на разных виртуальных или физических серверах. Иначе возможна нехватка ОЗУ для ПО ADVANTA при стандартных настройках инсталляции MS SQL.

2. Использование низкопроизводительных дисков для размещения файлов БД и файлов транзакций.

Диагностика: одним из симптомов может служит значение «Длина очереди диска» более 2 при использовании стандартного диска без RAID, иначе умножается количество дисков на два. Монитор ресурсов – Диск.

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

3. Расположение файлов Базы данных и файлов лога транзакций на одном диске.

Пояснение: Такое расположение способствует конкуренции за ресурсы при расположении на одном диске, особенно при включении Полной модели восстановления БД.

4. Включение Полной модели восстановления, при этом переполняется журнал транзакций по разным причинам.

Пояснение: согласно инструкции модель восстановления в настройках БД должна стоять в значении: Простая. Переполнение журнала транзакций может возникнуть по различным причинам (подробнее). На БД MS SQL необходимо обязательно выполнять резервное копирование и задачи обслуживания типа перестроение индексов, обновление статистики, c определённой периодичностью. Во избежание снижения производительности обслуживание рекомендуется проводить в ночное время.

5. Подготовка сервера баз данных MS SQL.

При создании или восстановлении БД необходимо выполнить инструкции, описанные тут.

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

Системные требования, указанные в инструкции, рекомендуется выбирать в соответствии с рекомендуемыми значениями здесь.

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

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

Качество связи между приложением и БД

Требования к пропускной способности сетевого интерфейса указаны здесь.

Рекомендуется проверить реальную пропускную способность через копирование файла объемом не менее 2 Гб, замерить среднюю скорость передачи.

При использовании сетевых файловых ресурсов тест с копированием объемного файла нужно выполнить и с использованием этих ресурсов.

Другое программное обеспечение и настройки сервера

  1. Антивирусное и другое ПО защиты информации – рекомендуется настроить исключение для каталога с приложением ADVANTA и файлами пользователей, либо настроить время сканирования в наименее нагруженное время, например ночью.
  2. Установка обновления безопасности – рекомендуется своевременно производить установку обновления безопасности ПО Microsoft.
  3. Шифрования файловой системы – не рекомендуется настраивать шифрование томов либо другого вида шифрования на серверах, используемых для работы ПО ADVANTA.
  4. Мониторинг и логирование – средства мониторинга и сбора логов необходимо настраивать таким способом, при котором данные настройки не приведут к снижению производительности ПО ADVANTA или компонентов ОС.
  5. Настройка ограничений у сетевой карты, дисковые квоты, файл подкачки – использование ограничений, не предусмотренных при установке ПО ADVANTA не рекомендуются и потенциально могут навредить производительности.
  6. Драйверы, установленные для конкретного сервера, должны быть установлены в соответствии с требованиями поставщика оборудования и ПО, установка должна проводиться квалифицированным персоналом.

Как найти, что «тормозит»

Пользователи любой системы, в том числе и Системы ADVANTA, могут обращаться с вопросом типа «У меня Система тормозит». Это субъективная оценка, и ее необходимо в первую очередь перевести в числовую плоскость, выполнить замеры и оценку объема производимых действий.

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

Определение конкретного «тормозящего» действия:

  • не всегда просто и очевидно;
  • не всегда может быть воспроизведено на другой инсталляции Системы.

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

Если к вам обращается пользователь, с проблемой «Система тормозит»:

  1. Выясните точное место, где это происходит. Определите действие, вызывающее медленную работу: это открытие диаграммы Ганта, или его сохранение, импорт данных через Excel, или создание проекта по шаблону и т.д.
  2. Выясните условия, в которых это происходит:
  • какой объем данных, который участвует в операции;
  • сколько задач в проекте, или строк в Excel-файле;
  • сколько точно времени занимает операция.

Также важен и контекст выполнения, для этого стоит попробовать выполнить действие:

  • от другого пользователя;
  • из другого браузера;
  • с другого компьютера.

Самый лучший способ – в той же локальной сети, в которой находится и сервер Системы.

Определите также, не связана ли проблема пользователя с пиковой нагрузкой:

  • вызванной работой других пользователей Системы (т.е. тестировать - в нерабочее время);
  • вызванной выполнением фоновых операции на выполнение какого-либо скрипта.

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

ОперацияВремя выполненияОбъем данныхПользовательРабочая станция и сеть
Открытие проекта в Ганте2 минуты17780 задачИванова Мария (лиц.руководитель)Windows 8, IE 10, 2Гб оперативной памяти. Соединение по vpn из филиала к центральному серверу. В локальной сети на Chrome открывается за 10 секунд.
Создание задачи в Ганте1 минута - Windows 8, IE 10, 2Гб оперативной памяти. Соединение по vpn из филиала к центральному серверу. С соседнего рабочего места из FireFox создается за 3 секунды

Замер длительности операций после обновления

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

Поэтому после того, как вы получили сообщение об обновлении, и в нём указано, что ранее «тормозившая» операция оптимизирована, проведите замеры. Без регистрации реестра «тормозящих» операций (пример в разделе 2) практически невозможно в дальнейшем объективно оценить изменения.

  1. Откройте имеющийся реестр проблемных операций и проведите замер скорости еще раз непосредственно перед обновлением.
  2. Обновите условия проведения замера в реестре.
  3. Установите обновление Системы.
  4. Проведите замер скорости еще раз, при тех же условиях.

Если произошло улучшение отклика Системы до приемлемого, то закройте соответствующий вопрос в технической поддержке ADVANTA.

Какие настройки влияют на время выполнения

Есть несколько известных настроек, которые могут приводить к ухудшению производительности, но улучшают взаимодействие Системы с пользователем.

В зависимости от требований бизнес-пользователей и возможностей аппаратного обеспечения, выбирайте оптимальный вариант.

Ниже перечень настроек, которые влияют на производительность.

Наличие OLAP-показателей в отчетах типа «Проекты и работы»

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

Дочерние объекты в отчете типа «Проекты и работы»

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

Сложные табличные отчеты

Табличные отчеты, которые содержат несколько отчетов источников, могут формироваться заметно дольше.

Дело в том, что для формирования итогового листа такого отчета, сначала формируются все отчеты источники (при этом выбираются все данные, а не постранично, как если бы отчет-источник просматривался из интерфейса Системы самостоятельно), затем уже все выгруженные данные с помощью формул размещаются на промежуточных и итоговом листе. Т.е. время на формирование такого отчета складывается из времени формирования каждого отчета источника, и затем еще время на формирование расчетных листов табличного отчета.

Виждеты на карточке объекта

При размещении на карточке объекта большого количества виджетов, считающихся онлайн, также снижается время открытия карточки объекта.

Загрузка большого объема данных через Excel

Если загружается большое количество строк Excel в Систему, то время загрузки также может быть значительным.

Загрузка становится заметной при объёме больше тысячи (1000) строк, а в некоторых случаях и меньшего объема (зависит от разных условий).

Выполнение настроенных процедур автоматизации (скриптов)

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

Скрипты создают большой набор обращений к Системе ⇒ могут увеличивать загрузку сервера Системы в период своей работы ⇒ мешают быстрой работе других пользователей.

Интеграция с другими системами

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

Наличие OLAP-кубов с онлайн-пересчетом

Если в кубах:

  • много строк данных (выбираются объекты или записи таблиц, которых в Системе сотни или тысячи);
  • множество показателей, связанных друг с другом,

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

В Системах с большим количеством данных рекомендуется переводить все, без исключения, OLAP-кубы на режим обновления «Один раз в сутки» или «По таймеру» (с интервалом срабатывания раз в несколько часов). Иначе есть значительная вероятность возникновения блокировок транзакций в базе данных, что приведет к возникновению проблем, описанных в предыдущем абзаце.

Типовые ошибки настроек

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

  • В медленном отчете указано отображение 10 000 строк на одну страницу. Для открытия такого отчета необходимо не только выбрать данные, но и передать их на клиентское рабочее место, а также отобразить большую страницу в браузере, что часто само по себе не может быть быстрым. При этом надо помнить, что, как правило, все тысячи записей пользователю не нужны, его интересует небольшое подмножество данных, работа разом со всеми данными встречается очень редко. Убедитесь, что число записей на страницу действительно должно быть очень большим. Обычно разумный компромисс – выдача страницами по 100 строк.
  • В форму запроса добавлены несколько сотен и больше строк, по каждой необходимо вводить какие-то данные. Основное назначение форм запроса – собрать оперативно данные от пользователей. Как правило новых данных не так много, редко встречается более 100 строк. Формы не предназначаются для редактирования тысяч строк данных, хотя и могут технически быть настроены таким образом. Убедитесь в реальной оправданности использования такого механизма, и по возможности добавьте фильтры для уменьшения числа строк.
  • В настройке формы указан пересчет сроков проекта. На больших проектах такая настройка увеличивает время сохранения данных формы, поскольку дополнительно выполняется и пересчет оперативного графика проекта заново, по всему проекту.

Способы для ускорения на уровне настроек

Известные способы ускорить работу Системы:

  • Настроить оффлайн-расчет виджетов - в разделе «Администрирование» → «Общие настройки» возможно установить способ расчета виджетов оффлайн, с указанием периодичности расчета.

Если установлен расчет по таймеру, то при открытии карточек объектов будут использоваться данные уже рассчитанные и сохраненные при последнем пересчете. Значение может немного запаздывать (на период пересчета), но часто такая оперативность и не требуется, тем более у каждого такого виджета есть кнопка пересчета, если требуется получить актуальные данные.

  • Настроить способ расчета OLAP-кубов по таймеру, убрав онлайн пересчет. Особенно это важно для кубов, где есть десятки тысяч, и более строк данных, а также сложные показатели-формулы. В свойствах OLAP-куба укажите период пересчета.
  • Настроить расписание обновления для сложных табличных отчетов. Если отчет формируется не под конкретного пользователя (не нужно учитывать его права) и занимает много времени при открытии, можно установить расписание его пересчета, тогда открываться будет уже рассчитанный отчет, и пользователи не будут ожидать при открытии окончания пересчета. Такой способ очень хорошо подходит для отображения дашбордов.

  • Если в отчетах типа «Проекты и Работы» используются отклонения или другие показатели, для расчета которых сделан OLAP-куб, то есть возможность отказаться от такого рода использования OLAP-показателей. Для этого необходимо в отчете «Проекты и Работы» в настройках указать, какие параметры вам необходимы. При этом расчет указанных параметров будет выполняться значительно быстрее, чем через ОЛАП.

Рекомендации на уровне «железа» и окружения

На стороне сервера также может находиться потенциал роста скорости работы Системы. Вот несколько рекомендаций:

  1. Для файла базы данных можно добавить SSD-диски, что заметно повысит ее производительность.
  2. Исключить другое ПО на сервере IIS - использование параллельно дополнительного ПО уменьшает ресурсы сервера, иногда существенно.
  3. Рекомендуется ставить IIS и СУБД MS SQL на один сервер:
  • RAM от 128 ГБ;
  • включенная опция shared memory, чтобы разграничить потребление памяти между IIS и SQL.

Рекомендации при эксплуатации Системы

Рекомендации при эксплуатации Системы ADVANTA с описанием возможных проблем, причинами их возникновения и способами их решения.

ПроблемаКатегория проблемыМетод диагностики причины и возможных решенийВозможные причины проблемыРешение
OLAP-куб не пересчитывается за отведенное время 1.Большой объем данных (много строк данных).
2. Приложение ADVANTA может строить неоптимальные запросы в БД.
3. Настроена слишком сложная логика OLAP-куба.
4. Сложная связь OLAP-кубов между собой.
5. Большая нагрузка на Систему во время пересчета.
6. Пересчет куба не успевает выполниться за отведенное время.
7. Большое количество показателей и измерений (в том числе скрытых).
1. Увеличить значение таймаута пересчёта куба - CubeCommandTimeout с перезапускам ADVANTA и службы MS SQL/PostgreSQL).
2. Попробовать пересчитать проблемный OLAP-куб отдельно.
3. Убрать показатели, которые нигде далее не используются.
4. Уменьшить количество измерений.
5. Упростить логику расчета OLAP-куба.
6. Упростить использование OLAP-куба в других кубах.
7. Перенос пересчета куба на ночное время (в менее загруженное для БД время).
8. Оптимизировать логику пересчета куба.
9. Оптимизировать запросы в БД, которые генерирует приложение ADVANTA - это возможно только с получением полного дампа от клиента.
Медленная работа Системы, например:
• долгое открытие ГАНТа;
• долгое открытие Карточки проекта;
• долгое обновление/сохранение страниц.
1. Долгая подгрузка меню пользовательских колонок в ГАНТе.
2. Долгое открытие excel-отчётов.
Большое количество реквизитов в Карточке объекта1. Разнести (сократить) большое количество реквизитов по другим объектам.
2. Сократить количество условных реквизитов у объектов.
1. Долгие операции автоматизации (триггеров). Можно посмотреть на логи триггеров/Системы.
2. Триггеры не завершают свою работу.
Неоптимально написанный триггер (например, большое количество записей обработки данных)1. Подключить триггерописцев по проекту для оптимизации.
2. Разбить большое количество записей на порции.
3. Под каждую операцию добавить timeout, чтобы приложение/база успевали обработать данные.
Заходить в каждый LINQ и проверять время выполнения. Адекватное время выполнения до 3 секундНеоптимально написанный LINQ-запросПодключить внедренцев по проекту для оптимизации
Долгая авторизация через Active Directory не под Администратором Системы1. Проверить сетевую связанность между приложением и Active Directory.
2. Проверить скорость взаимодействия между приложением и Active Directory.
3. Проверить в ненагруженное время (например, ночью).
1. Проблемы в инфраструктуре.
2. Проблема в производительности БД.
3. Проблема в неправильно настроенном Active Directory и связи с ней из приложения.
Периодически быстродействие Системы (в нормальном - 3 секунды, в медленном 1.5 минуты)Проверить графики в Zabbix по нагрузке на сервер приложения и БДЗапускаемые периодически триггеры
Чрезмерное потребление оперативной памяти Диагностировать потребление можно через Zabbix и связать с запускаемыми процессами по таймеру или триггерамиСтроятся крупные excel-отчёты, которые занимают большое количество оперативной памятиВынести сервис расчета excel-отчетов на отдельную машину для ОС Windows/для ОС Linux
Чрезмерное потребление CPU (повторяется в одно и то же время каждый день) 1. Диагностировать потребление можно через Zabbix и связать с запускаемыми процессами по таймеру или триггерами.
2. Долгие операции автоматизации (триггеров). Можно посмотреть на логи триггеров/Системы.
3. Триггеры не завершают свою работу.
Неоптимально написанный триггер (например, большое количество записей обработки данных)1. Подключить триггерописцев по проекту для оптимизации.
2. Разбить большое количество записей на порции.
3. Под каждую операцию добавить timeout, чтобы приложение/база успевали обработать данные.

Анализ логов

В «Общих настройках» Системы в Администрировании есть функция для сбора логов операций, которая может быть запрошена разработчиком при необходимости. Управление логами выполняется из пункта «Система сбора информации об ошибках».

1)
Механизм, по которому запускаются с заданной периодичностью фоновые процессы Системы