Выделение памяти для сервисов
По мере расширения вашего бизнеса и неизбежного роста числа подключенных устройств увеличивается и потребность в ресурсах для обеспечения корректной работы платформы Navixy. Хотя вычислительные ресурсы CPU и дисковое пространство выделяются по мере необходимости без каких‑либо ограничений, максимальный объём оперативной памяти (RAM), который может быть задействован, строго регулируется системными конфигурациями. Поэтому может наступить момент, когда вы осознаете, что выделенной памяти недостаточно, и потребуется её увеличить. В этом разделе мы дадим рекомендации по поиску необходимых конфигурационных файлов и внесению изменений для оптимизации производительности платформы.
При внесении изменений в конфигурации, управляющие запуском сервисов, требуется предельная осторожность. Проявляйте максимальную тщательность и внимательность при их редактировании, чтобы обеспечить стабильную работу.
Помните! Неосторожные изменения конфигурации могут привести к полной неработоспособности сервиса. Перед внесением любых изменений в конфигурацию рекомендуется создать резервную копию. Поскольку конфиг представляет собой обычный текстовый файл, вы можете безопасно сохранить его в отдельном каталоге или сохранить его содержимое в другом месте, обеспечив целостность и предотвратив возможную потерю.
Java‑сервисы
Бэкенд платформы Navixy состоит из трёх Java‑сервисов. В конфигурациях по умолчанию для них выделяются следующие объёмы RAM:
API‑server — 1024 Мб
SMS‑server — 512 Мб
TCP‑server — 1024 Мб
Этого объёма памяти достаточно для стабильной работы платформы при регистрации до нескольких тысяч устройств. Однако если вы сталкиваетесь с нестабильностью платформы, например, медленными запросами к API, длительной генерацией отчетов или проблемами с обработкой данных трекеров, увеличение выделяемой памяти может стать решением. Ниже рассмотрим, где найти конфиги, задающие это значение, в зависимости от способа развёртывания платформы.
Рекомендуется указывать объём выделяемой памяти как кратный 1024. Значение указывается для каждого сервиса отдельно.
Внося правки в конфиги, крайне важно учитывать общий объём доступной памяти. Это позволит не указать значение, превышающее физические ограничения. Таким образом вы сможете эффективно оптимизировать производительность и избежать возможных проблем. Кроме того, если Java‑сервисы и база данных расположены на одном сервере, не забудьте оставить достаточно памяти для работы базы данных — по умолчанию это 70% всей памяти.
Linux — сервисы systemd
Для текущих версий платформы (как недавно установленных, так и получивших последние обновления) в качестве менеджера запуска сервисов используется systemd . Конфигурации запуска расположены в каталогах сервисов по следующим путям:
/home/java/api-server/api-server.service.env/home/java/sms-server/sms-server.service.env/home/java/tcp-server/tcp-server.service.env
В каждом файле есть строка вида MAX_HEAP_SIZE="1024m". Укажите объём памяти в мегабайтах, который вы хотите выделить сервису. Не забудьте сохранить букву m , обозначающую мегабайты.
Перезапустите платформу или конкретный сервис для применения изменений.
Linux — сервисы runit
Если при обновлении платформы до последней версии вы решили не переходить на systemd (эта опция предлагается при автоматическом обновлении) или если вы используете старую версию платформы Navixy On‑premise, Java‑сервисы используют runit как супервизор сервисов. У него также есть собственные конфигурационные файлы, которые расположены по следующим путям:
/etc/sv/api-server/run/etc/sv/sms-server/run/etc/sv/tcp-server/run
Среди параметров внутри каждого файла вы найдете значение Xmx — это максимальный объём памяти, который может быть выделен для соответствующего Java‑сервиса. Параметр в целом выглядит так: -Xmx1024m — это означает, что для сервиса выделено 1024 Мб RAM. Отредактируйте это значение и укажите требуемое, затем сохраните файл.
Перезапустите платформу с помощью команды restart-navixy для применения изменений.
Linux — docker‑инстанс
В docker‑версии платформы выделение памяти задаётся при развёртывании контейнеров — при выполнении команды docker compose up -d . Это обязательный шаг при установке и обновлении инстанса, но может выполняться и независимо от этих процессов.
Хотя базовые настройки инстанса указываются в файле .env , для конфигурирования работы контейнеров используется файл compose.yaml — он расположен в той же рабочей папке инстанса, что и прочие системные файлы.
Внутри этого файла вы увидите различные секции, задающие параметры запуска всех контейнеров. Чтобы изменить объём выделяемой памяти для контейнеров api, sms и tcp нужно найти соответствующие секции и добавить опцию "MAX_HEAP_SIZE=" в подсекцию environment , например:
Ниже приведён пример того, как это делается для api-server на существующем инстансе:

Сохраните файл.
После внесения изменений выполните следующую команду, находясь в рабочем каталоге:
Это пересоздаст контейнеры с учётом новых настроек.
The compose.yaml файл заменяется при обновлении docker‑инстанса Navixy, и в этом случае вышеуказанные настройки необходимо выполнить повторно. Вы можете сделать это до первого запуска обновлённого инстанса, чтобы сразу запустить его с нужными параметрами.
Windows — wrapper‑сервисы
Java‑сервисы изначально не предназначены для работы в Windows, поэтому для их запуска используется стороннее ПО. Оно называется YAJSW (Yet Another Java Service Wrapper) и предназначено для преобразования обычных исполняемых jar‑файлов в сервисы Windows. Это ПО входит в дистрибутивный пакет платформы Navixy и настраивается в ходе первоначальной установки.
Wrapper не имеет стандартного каталога установки и может располагаться где угодно, но обычно он размещается в папке C:\java\wrapper . Внутри вы найдёте папку \conf с конфигурационными файлами для трёх сервисов:
wrapper.api-server.confwrapper.sms-server.confwrapper.tcp-server.conf
В нижней части каждого из конфигов находятся параметры запуска сервиса, среди которых есть строка вида:
Значение параметра -Xmx1024m означает, что для сервиса выделено 1024 Мб RAM. Отредактируйте это значение и укажите требуемый объём RAM, сохранив m букву, затем сохраните файл.
Перезапустите сервис(ы) для применения изменений.
MySQL
База данных является самым ресурсоёмким сервисом в составе платформы. Когда большое количество устройств создаёт нагрузку при ограниченном объёме памяти, базе данных может быть сложно обработать все входящие запросы. В результате платформа Navixy может работать медленно и нестабильно. Мы настоятельно рекомендуем мониторить производительность базы данных и при необходимости увеличивать объём RAM сервера.
Объём RAM, выделенный базе данных, — это статическое значение, указанное в конфигурации MySQL. В общем случае рекомендуется поддерживать это значение на уровне 70% от общего объёма RAM на сервере. Поэтому, если вы увеличиваете общий объём RAM для повышения производительности базы данных, после этого необходимо изменить значение в конфигурации.
Файл конфигурации MySQL расположен по следующему пути:
Linux:
/etc/mysql/mysql.conf.d/mysqld.cnfWindows:
C:\ProgramData\MySQL\MySQL Server 8\my.ini
В разделе [mysqld] данной конфигурации вы найдёте параметр innodb_buffer_pool_size — он задаёт объём выделяемой памяти для базы данных. Если текущий размер недостаточен, измените параметр соответствующим образом (обязательно сохраните единицу измерения — G для гигабайт). Сохраните файл и перезапустите MySQL.
Последнее обновление
Это было полезно?