Перейти к содержанию

Факторы, влияющие на производительность. Рекомендации по оптимизации

Введение

Производительность Comindware Platform зависит от сложности настроенных приложений, объёма обрабатываемых данных и интеграций с внешними системами.

Приблизительно оценить снижение производительности в зависимости от наиболее важных факторов можно по следующей формуле

Снижение производительности = {кол-во правил для форм} × {сложность правил для форм} 
× {правила контекстных ролей} × {кол-во элементов на формах и вложенных форм}
× {объем данных}

Ниже представлены типовые рекомендации по повышению производительности.

Примечание

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

Оптимизация времени отклика

  1. Вход в систему

    • Проверьте и сведите к минимуму сетевые задержки. Используйте инструменты мониторинга сети, например traceroute и ping.
    • Проверьте и повысьте скорость ответа сервера. Этого можно достичь путем оптимизации серверного оборудования, использования более производительных процессоров, увеличения пропускной способности сети и увеличения объема оперативной памяти.
  2. Открытие разделов навигации

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

    • Сократите количество столбцов с вычисляемыми атрибутами.
    • Упростите выражения для вычисляемых атрибутов.
    • Упростите выражения для фильтра данных таблицы. Для повышения производительности можно переписать формулу в выражение на языке N3.
  4. Открытие формы

    • Сократите количество полей с вычисляемыми атрибутами.
    • Упростите выражения для вычисляемых атрибутов. Также можно переписать формулы в выражения на языке N3, который обеспечивает более высокую производительность.
    • Уменьшите сложность правил для формы:
      • сократите количество правил;
      • задайте условия выполнения правил, чтобы вложенные в них действия не выполнялись без необходимости;
      • упростите выражения в правилах;
      • для повышения производительности можно переписать формулы в выражения на языке N3.
    • Проверьте и упростите иерархию вложенных форм.
  5. Сохранение формы

    • Уменьшите сложность правил для формы:
      • сократите количество правил;
      • задайте условия выполнения правил, чтобы вложенные в них действия не выполнялись без необходимости;
      • упростите выражения в правилах.
    • Оптимизируйте сценарии, выполняющиеся при сохранении формы:
      • упростите алгоритмы работы сценариев;
      • сократите количество действий;
      • сократите количество условий и вложенных циклов;
      • упростите выражения в сценариях. Также можно переписать формулы в выражения на языке N3, который обеспечивает более высокую производительность;
      • сократите количество выражений.
    • Сократите количество фиктивных и реальных изменений в данных формы.
    • Оптимизируйте скрипты, выполняющиеся при сохранении формы.
      • упростите алгоритмы работы скриптов;
      • проверьте и оптимизируйте взаимодействие с API, например используйте более эффективные методы.
  6. Контекстные правила ролей

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

Оптимизация интеграций с внешними службами

  1. Прием сообщений

    • Оптимизируйте параметры подключений и путей передачи данных.
    • Оптимизируйте интервал опроса сервера входящих сообщений.
  2. Отправка сообщений

    • Оптимизируйте параметры подключений и путей передачи данных.
    • Оптимизируйте частоту отправки сообщений.
  3. Обработка сообщений сценарием

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

    • Упростите алгоритмы работы скрипта.
    • Проверьте и оптимизируйте взаимодействие с API, например используйте более эффективные методы.
  5. Сохранение данных

    • Сократите количество фиктивных и реальных изменений в данных.
  6. Интеграция с сервером каталогов

    • Оптимизируйте подключения и запросы к серверу каталогов.
  7. Службы Apache Kafka, Apache Ignite и OpenSearch (Elasticsearch)

    • Оптимизируйте конфигурацию служб Apache Kafka, Apache Ignite и OpenSearch (Elasticsearch):
      • выделение памяти;
      • размер кучи Java.
    • Проверьте и настройте конфигурации репликации и шардирования данных для OpenSearch (Elasticsearch).
    • Настройте параметры устойчивости и производительности Apache Ignite, такие как количество узлов и сетевые параметры.
    • Настройте параметры устойчивости и производительности Apache Kafka, такие как период хранения сообщений и сегментация журналов.
    • Регулярно дефрагментируйте базу данных Apache Ignite для ускорения доступа и освобождения места.
  8. Антивирус

    • Проверьте, не снижается ли производительность из-за работы антивируса на сервере.
    • Рассмотрите возможность настройки исключений для служб Apache Kafka, Apache Ignite и OpenSearch (Elasticsearch) в антивирусном программном обеспечении.
  9. Ненужные внешние службы

    • Отключите ненужные внешние службы для повышения производительности.

Оптимизация выполнения процессов и токенов

  1. Рекурсия в настройках

    • Избегайте рекурсивных настроек в процессах. 2. Обработка сообщений сценарием

    • Упростите выражения в сценарии.

    • Сократите количество выражений.
    • Сократите количество действий.
    • Сократите количество условий и вложенных циклов.
    • Упростите алгоритм работы сценария.
  2. Сохранение данных

    • Сократите количество фиктивных и реальных изменений в данных.
  3. Оптимизация алгоритмов

    • Декомпозируйте и оптимизируйте процессы.
    • Разделите сложные бизнес-процессы на более мелкие, управляемые части. Это поможет упростить управление процессами, быстрее вносить изменения и снизить вероятность ошибок.
    • Создайте подпроцессы для выполнения определенных задач или логических блоков. Вызывайте эти подпроцессы из основного процесса. Это поможет структурировать процессы, сделать их более понятными и упростит управление ими.
    • Используйте понятные и простые логические структуры, избегая избыточных условий и ветвлений.
    • Упростите логику алгоритмов, используемых в бизнес-процессах:
      • уменьшите количество операций;
      • оптимизируйте структуры данных.

Оптимизация публикации процессов и токенов

  1. Количество версий процессов

    • Сократите количество версий диаграмм процессов, оставив только необходимые.

Мониторинг и диагностика

  1. Мониторинг и трассировка

    • Используйте инструменты трассировки мониторинга работы Comindware Platformдля выявления узких мест:
    • страницу «Производительность»;
    • страницу «Журналы событий»;
    • страницу «Мониторинг»;
    • файловые журналы;
    • тайминги запросов браузера;
    • Используйте инструменты профилирования производительности вебсайта, например Webpagetest, профайлер JavaScript в Chrome;
    • Используйте инструменты мониторинга производительности сервера, например Zabbix, Prometheus, Grafana, VmStat (sysstat), top, htopperf и flamegraph.pl, .
    • Используйте инструменты мониторинга:
    • OpenSearch (Elasticsearch) — Kibana.
    • Apache Apache Kafka — AKHQ, Kowl, Kafdrop, UI for Apache Kafka, Lenses, CMAK, Confluent CC, Conduktor.
    • Apache Ignite — JMX и MBeans, системные представления в SQL, Yardstick Framework.
    • В журналах обращайте внимание на разницу во времени между началом и завершением событий, потенциально вызывающих снижение производительности.
  2. Резервное копирование и индексация

    • Настройте регулярное резервное копирование.
    • Проверьте индексацию данных.
  3. Системные службы

    • Для отладки отключите системные службы, вызывающие подозрения.
    • В случае неудачной настройки:
    • остановите соответствующие системные службы;
    • удалите неудачно настроенные сущности или исправьте настройку;
    • снова включите системные службы.
К началу