Дефрагментация данных Apache Ignite
Введение
Здесь представлены инструкции по дефрагментации хранилища данных Apache Ignite для ПО Comindware Platform в Linux. Дефрагментация хранилища Apache Ignite позволяет повысить производительность работы ПО и сократить объем данных хранилища на диске.
Внимание!
Во время дефрагментации хранилища Apache Ignite экземпляр ПО будет недоступен. Поэтому дефрагментацию следует выполнять в нерабочее время.
Порядок дефрагментации
- Создайте резервную копию базы данных экземпляра ПО.
- Скачайте бинарный дистрибутив Apache Ignite, например apache-ignite-2.16.0-bin.zip или более новую версию.
-
Перейдите в режим суперпользователя:
sudo -sили
su - -
Распакуйте дистрибутив Apache Ignite в домашнюю папку (здесь и далее
username— имя текущего пользователя):unzip apache-ignite-2.16.0-bin.zip -d /usr/share/ignite -
Задайте переменную среды
IGNITE_HOME:export IGNITE_HOME=/usr/share/ignite -
Скопируйте в папку
/usr/share/igniteфайлIgnite.configиз папки/var/www/<instanceName>(где<instanceName>— имя экземпляра ПО):cp /var/www/<instanceName>/Ignite.config /usr/share/ignite/ -
Перейдите в папку
binApache Ignite:cd /usr/share/ignite/bin -
В файле
control.shизмените директивуDEFAULT_CONFIG:DEFAULT_CONFIG=config/Ignite.config -
Получите список узлов, зарегистрированных в базовой топологии:
bash control.sh --baseline -
Назначьте дефрагментацию данных Apache Ignite при перезапуске экземпляра ПО, указав вместо
<id>идентификаторы узлов, полученные на шаге 9:bash control.sh --defragmentation schedule --nodes <id>11. Остановите и запустите экземпляр ПО:
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=65536 -
Раскомментируйте строку и задайте значение в файле
/etc/systemd/system.conf:DefaultLimitNOFILE=65536 -
Откройте для редактирования конфигурацию сервиса экземпляра ПО:
systemctl edit comindware<instanceName>.service -
Добавьте в него строки:
[Service]LimitNOFILE=65536LimitNOFILESoft=65536 -
Перезагрузите машину и экземпляр ПО.