> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/on-premise/ru/on-premise/how-to-guide/maintenance/memory-allocation-for-services.md).

# Выделение памяти для служб

Настройте выделение RAM для Java-служб Navixy и MySQL в развертываниях systemd, runit, Docker и Windows. Отредактируйте файлы конфигурации служб, чтобы задать ограничения памяти.

По мере расширения вашего бизнеса и неизбежного роста количества подключенного внешнего оборудования растет и потребность в ресурсах, необходимых для корректной работы платформы Navixy. Хотя процессорная мощность и дисковое пространство выделяются по мере необходимости без ограничений, максимальный объем ОЗУ, который можно использовать, строго регламентируется системными настройками. Поэтому может наступить момент, когда вы поймете, что выделенной памяти недостаточно и ее необходимо увеличить. В этом разделе мы расскажем, где найти нужные конфигурационные файлы и какие изменения внести, чтобы оптимизировать производительность платформы.

{% hint style="danger" %}
Когда речь идет об изменении конфигураций, определяющих запуск служб, требуется предельная осторожность. Проявляйте большую внимательность и аккуратность при их редактировании, чтобы обеспечить бесперебойную работу.

**Помните!** Неосторожные изменения конфигурации могут привести к полной неработоспособности службы.\
Перед внесением любых изменений в config рекомендуется создать резервную копию. Поскольку config — это всего лишь текстовый файл, вы можете безопасно сохранить его в отдельном каталоге или скопировать его содержимое в другое место, обеспечив его сохранность и предотвратив возможную потерю.
{% endhint %}

## Java-сервисы

Серверная часть платформы Navixy состоит из трех Java-сервисов. В конфигурациях по умолчанию для них выделены следующие объемы ОЗУ:

* API-сервер - 1024 МБ
* SMS-сервер - 512 МБ
* TCP-сервер - 1024 МБ

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

Рекомендуется задавать объем выделяемой памяти как **кратное 1024**. Значение задается для каждого сервиса отдельно.

{% hint style="info" %}
При внесении изменений в конфигурации крайне важно учитывать общий доступный объем памяти. Это позволит вам не задать значение, превышающее физические ограничения. Таким образом вы сможете эффективно оптимизировать производительность и избежать возможных проблем. Кроме того, если Java-сервисы и база данных расположены на одном сервере, не забудьте оставить достаточно места для работы базы данных — по умолчанию на нее отводится 70 % всей памяти.
{% endhint %}

#### 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` обозначающую мегабайты.

[Перезапустите платформу или конкретную службу](/docs/on-premise/ru/on-premise/how-to-guide/maintenance/restarting-instance.md) чтобы применить изменения.

#### 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 МБ ОЗУ. Измените это значение и укажите нужный объем, затем сохраните файл.

Перезапустите платформу с помощью `restart-navixy` команды, чтобы применить изменения.

#### Linux — экземпляр в Docker

В Docker-версии платформы распределение памяти задается при развертывании контейнеров — при выполнении `docker compose up -d` команды. Это обязательный шаг при установке и обновлении экземпляра, но его можно выполнить независимо от этих процессов.

Хотя базовые настройки экземпляра указаны в `.env` файле, а файл под названием `compose.yaml` используется для настройки работы контейнеров — он находится в той же рабочей папке экземпляра, что и другие системные файлы.

Внутри этого файла вы можете увидеть различные разделы, задающие параметры запуска для всех контейнеров. Чтобы изменить объем выделяемой памяти для *api*, *sms* и *tcp* контейнеров, нужно найти соответствующие разделы и добавить параметр `"MAX_HEAP_SIZE="` в `подраздел environment` например:

```
- "MAX_HEAP_SIZE=2048m"
```

Ниже приведен пример того, как это делается для *API-сервер* на уже существующем экземпляре:

![](https://1855757370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkUnMmePH99SsdChtqqu7%2Fuploads%2Fgit-blob-e3209eb99957ff2b0928e0c405941d768a6a407b%2Fimage-20230921-082139.png?alt=media)

Сохраните файл.

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

```
docker compose up -d
```

Это пересоздаст контейнеры с учетом новых настроек.

{% hint style="info" %}
Параметр `compose.yaml` Этот файл заменяется при обновлении Docker-экземпляра Navixy, и в этом случае вышеприведенные настройки необходимо задать снова. Вы можете сделать это до первого запуска только что обновленного экземпляра, чтобы затем сразу запустить его с необходимыми настройками.
{% endhint %}

#### Windows — службы-обертки

Java-сервисы по умолчанию не предназначены для работы в Windows, поэтому для их запуска используется стороннее ПО. Оно называется **YAJSW (Yet Another Java Service Wrapper)** и предназначено для преобразования обычных исполняемых jar-файлов в службы Windows. Это ПО входит в дистрибутив платформы Navixy и настраивается во время первоначальной установки.

Wrapper не имеет стандартного каталога установки и может находиться где угодно, но обычно его размещают в папке `C:\java\wrapper` Внутри вы найдете `\conf` папку, в которой находятся конфигурационные файлы для трех служб:

* `wrapper.api-server.conf`
* `wrapper.sms-server.conf`
* `wrapper.tcp-server.conf`

В нижней части каждой конфигурации находятся параметры запуска службы, и они включают строку вида:

```
wrapper.java.additional.3 = -Xmx1024m
```

Значение параметра `-Xmx1024m` означает, что службе выделено 1024 МБ ОЗУ. Измените это значение и укажите требуемый объем ОЗУ, сохранив `m` букву, затем сохраните файл.

[Перезапустите службу(ы)](/docs/on-premise/ru/on-premise/how-to-guide/maintenance/restarting-instance.md) чтобы применить изменения.

## MySQL

База данных — самый требовательный к ресурсам сервис платформы. Когда большое количество устройств создает нагрузку на ограниченный объем памяти, базе данных может быть сложно обрабатывать все входящие запросы. В результате платформа Navixy может работать медленно и нестабильно. Мы настоятельно рекомендуем отслеживать производительность базы данных и при необходимости увеличивать объем ОЗУ сервера.

Объем ОЗУ, выделяемый базе данных, — это статическое значение, которое задается в конфигурации MySQL. Обычно рекомендуется оставлять его на уровне 70 % от общего объема ОЗУ сервера. Поэтому, если вы увеличите общий объем ОЗУ для повышения производительности базы данных, после этого вам нужно изменить значение в конфигурации.

Файл конфигурации MySQL находится по следующему пути:

* Linux: `/etc/mysql/mysql.conf.d/mysqld.cnf`
* Windows: `C:\ProgramData\MySQL\MySQL Server 8\my.ini`

В `[mysqld]` разделе этой конфигурации вы найдете параметр `innodb_buffer_pool_size` — он задает объем памяти, выделяемой базе данных. Если текущего размера недостаточно, измените параметр соответствующим образом (обязательно сохраните единицу измерения — `G` для гигабайт). Сохраните файл и перезапустите MySQL.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/on-premise/ru/on-premise/how-to-guide/maintenance/memory-allocation-for-services.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
