Введение
Здесь представлены инструкции по дефрагментации хранилища данных 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/
-
Перейдите в папку
bin
Apache 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 65535
www-data soft nproc 200000
www-data hard nproc 200000
www-data soft nofile 200000
www-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=65536
LimitNOFILESoft=65536
-
Перезагрузите машину и экземпляр ПО.