Дефрагментация данных Apache Ignite
Введение
Здесь представлены инструкции по дефрагментации хранилища данных 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
- 
Перезагрузите машину и экземпляр ПО. 
Эта статья была полезна 1 чел.
