Apache Ignite. Дефрагментация данных
Введение
Здесь представлены инструкции по дефрагментации хранилища данных Apache Ignite для ПО Comindware Platform в Linux. Дефрагментация хранилища Apache Ignite позволяет повысить производительность работы ПО и сократить объем данных хранилища на диске.
Внимание!
Во время дефрагментации хранилища Apache Ignite экземпляр ПО будет недоступен. Поэтому дефрагментацию следует выполнять в нерабочее время.
Порядок дефрагментации
- Создайте резервную копию базы данных экземпляра ПО.
- Скачайте бинарный дистрибутив Apache Ignite, например apache-ignite-2.17.0-bin.zip или более новую версию.
-
Перейдите в режим суперпользователя:
sudo -sили
su - -
Распакуйте дистрибутив Apache Ignite в домашнюю директорию (здесь и далее
username— имя текущего пользователя):unzip -q apache-ignite-2.17.0-bin.zip -d /usr/share/ignite -
Задайте переменную среды
IGNITE_HOME:export IGNITE_HOME=/usr/share/ignite/apache-ignite-2.17.0-bin -
Задайте переменную среды
IGNITE_CONTROL_UTILITY_USE_CONNECTOR_CONNECTION:export IGNITE_CONTROL_UTILITY_USE_CONNECTOR_CONNECTION=true -
Перейдите в директорию
binApache Ignite:cd /usr/share/ignite/apache-ignite-2.17.0-bin/bin -
Получите список узлов, зарегистрированных в базовой топологии:
bash control.sh --baselineПример списка узлов в базовой конфигурацииroot@NODE1:/usr/share/ignite/apache-ignite-slim-2.17.0-bin/bin# export IGNITE_HOME=/usr/share/ignite/apache-ignite-slim-2.17.0-bin/root@NODE1:/usr/share/ignite/apache-ignite-slim-2.17.0-bin/bin# cd apache-ignite-slim-2.17.0-bin/bin/root@NODE1:/usr/share/ignite/apache-ignite-slim-2.17.0-bin/bin# bash control.sh --baselineControl utility [2.17.0]User: rootTime: 2025-12-04T11:43:07.505[BASELINE]Arguments: --baselineCluster state: ACTIVECurrent topology version: 1Baseline auto adjustment enabled: softTimeout=3000Baseline auto-adjust are not scheduledCurrent topology version: 1Coordinator: ConsistentId=a06ff4bf-3a28-4b6c-a66a-323bca97a8e0, Address=localhost/127.0.0.1, Order=1Baseline nodes:ConsistentId=a06ff4bf-3a28-4b6c-a66a-323bca97a8e0, Address=localhost/127.0.0.1, State=ONLINE, Order=1Number of baseline nodes: 1Other nodes not found.Command [BASELINE] finished with code: 0Time: 2025-12-04T11:43:07.839Execution time: 334 ms -
Назначьте дефрагментацию данных Apache Ignite при перезапуске экземпляра ПО, указав вместо
<id>идентификаторы узлов (ConsistentId), полученные на шаге 9:bash control.sh --defragmentation schedule --nodes <id> -
Остановите и запустите экземпляр ПО:
systemctl stop comindware<instanceName>systemctl start comindware<instanceName>Здесь
<instanceName>— имя экземпляра ПО. -
Инициализируйте экземпляр ПО:
-
С помощью командной строки:
curl localhost:<port>или
curl <instance_fqdn> -
Либо с помощью браузера, перейдя по адресу:
<ip>:<port>или
<instance_fqdn>
Здесь:
<instance_ip>, <port>— IP-адрес и порт экземпляра ПО;<instance_fqdn>— адрес веб-сайта с экземпляром ПО.
-
-
Дождитесь завершения дефрагментации данных.
Примечание
- В процессе дефрагментации для просмотра статуса используйте команду:
watch -cd bash control.sh --defragmentation status- В процессе дефрагментации Apache Ignite будет вносить сведения в файл журнала вида
/var/lib/comindware/<instanceName>/Database/log/ignite-xxxxxxxx.0.log. - По завершении дефрагментации:
- в журнале Apache Ignite должно появиться событие:
Defragmentation process complete; - команда
watch -cd bash control.sh --defragmentation statusдолжна вывести сообщениеDefragmentation process complete.
- в журнале Apache Ignite должно появиться событие:
-
Перезапустите экземпляр ПО, чтобы его снова можно было использовать.
systemctl restart comindware<instanceName> -
Инициализируйте экземпляр ПО, также как на шаге 12.
Решение возможных проблем
Если во время дефрагментации возникнет ошибка «Слишком много открытых файлов» (Too many open files), выполните указанные ниже шаги (пример приведён для Astra Linux).
-
Добавьте в файл
/etc/security/limits.confстроки:* soft nproc 65535* hard nproc 65535* soft nofile 65535* hard nofile 65535www-data soft nproc 200000www-data hard nproc 200000www-data soft nofile 200000www-data hard nofile 200000 -
Добавьте в файл
/etc/pam.d/common-sessionстроку:session required pam_limits.so -
Добавьте в файл
/etc/sysctl.confстроку:fs.file-max = 2097152 -
Раскомментируйте строку и задайте значение в файле
/etc/systemd/user.conf:DefaultLimitNOFILE=200000 -
Раскомментируйте строку и задайте значение в файле
/etc/systemd/system.conf:DefaultLimitNOFILE=200000 -
Откройте для редактирования конфигурацию сервиса экземпляра ПО:
systemctl edit comindware<instanceName>.service -
Добавьте в него строки:
[Service]LimitNOFILE=200000LimitNOFILESoft=200000 -
Перезагрузите машину и экземпляр ПО.
Эта статья была полезна 2 чел.