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

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

Оптимизация архитектуры вашего приложения

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

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

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

Апгрейд оборудования

AggreGate Server

AggreGate Server - это центральный компонент системы, и его производительность во многом влияет на остальные компоненты системы. Есть три ключевых фактора, которые влияют на производительность сервера:

  • Количество процессоров/ядер и их частота
  • Объем установленной оперативной памяти
  • Производительность ввода-вывода подсистемы хранения данных

Рекомендуемые параметры оборудования можно найти в разделе Системные требования. Однако для некоторых драйверов устройств требуется большой объем памяти и/или вычислительная мощность.

В целом, AggreGate Server следует перенести на сервер с большей производительностью, если долгосрочная средняя нагрузка CPU превышает 50%. Такая высокая нагрузка может вызвать проблемы или даже утрату данных во время максимальных нагрузок.

Увеличение памяти может потребоваться в следующих случаях:

  • Если обнаружено интенсивное использование своп или участились прерывания Page Fault
  • Если в процессе работы AggreGate Server увеличивается время отклика
  • Если в файле журнала сервера появляется сообщение java.lang.OutOfMemoryError: Java heap space

Рекомендуемая последовательность для решения проблем с памятью:

  • Увеличить лимиты памяти для Виртуальной машины Java AggreGate Server
  • Физически добавить оперативную память в ПК, на котором запущен AggreGate Server
  • Переключиться на выделенный сервер БД
  • Увеличение лимита памяти JVM AggreGate Server

    Вопрос расхода ресурсов памяти следует тщательно проанализировать, если датчик использования памяти AggreGate Server сообщает об объемах использования выше 90%. Важно знать, что Виртуальная машина Java AggreGate Serverа, аналогично любой другой JVM, никогда не будет использовать всю RAM, доступную на ПК, на которой она запущена. Использование памяти JVM контролируют два параметра:

    • Начальный объем памяти, назначенный JVM
    • Максимальный объем памяти, который может использовать JVM

    Эти параметры описаны здесь.

    Если датчик использования памяти сообщает о высоком проценте использования памяти, необходимо увеличить параметр (-Xmx) максимального объема памяти в параметрах загрузчика AggreGate Server . Рекомендуется установить значение до половины от доступной оперативной памяти.

    Установление максимального объема памяти может вызвать проблему с запуском AggreGate Server , поскольку JVM необходима эта память, чтобы быть доступной в одном сплошном блоке (дополнительную информацию см. здесь). Если Вы столкнулись с такой проблемой, рекомендуется установка дополнительной памяти.

    Переключение на выделенный сервер БД

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

    При таких крупных инсталляциях, и AggreGate Server, и сервер БД, запущенные на одной и той же машине, могут вызвать серьезное снижение производительности. Мы рекомендуем разместить Ваш сервер БД на выделенной машине, которая подключена к машине AggreGate Server через высокоскоростной сетевой интерфейс.

    Рассмотрите возможность перехода на выделенный сервер БД, если:

    • У Вас более 10 000 устройств, управляемых одной инсталляцией AggreGate Server
    • Ваша БД содержит более 100 миллионов событий
    • Существуют устройства, чья история событий содержит более 1 миллиона событий (и, таким образом, есть таблицы баз данных с более чем 1 миллионом записей)
    • Объем памяти, необходимый для хорошей производительности для Вашего сервера БД, составляет больше 50% от физически установленной на ПК, на которой запущены AggreGate Server и сервер БД.
    • Общая производительность Вашей системы AggreGate низкая из-за высокой загрузки CPU или интенсивного использования файла подкачки.