Введение
Здесь представлены инструкции по дефрагментации хранилища данных Apache Ignite для ПО Comindware Platform в Linux. Дефрагментация хранилища Apache Ignite позволяет повысить производительность работы ПО и сократить объем данных хранилища на диске.
Внимание!
Во время дефрагментации хранилища Apache Ignite экземпляр ПО будет недоступен. Поэтому дефрагментацию следует выполнять в нерабочее время.
Порядок дефрагментации
- Создайте резервную копию базы данных экземпляра ПО.
- Скачайте бинарный дистрибутив Apache Ignite, например apache-ignite-2.16.0-bin.zip или более новую версию.
-
Перейдите в режим суперпользователя:
su -или
sudo -i -
Распакуйте дистрибутив 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 -
Перезагрузите машину и экземпляр ПО.