mybpm!
Скачать в формате: PDF pdf DOCX word

Ускорение входящей миграции

Введение

В этом файле прописаны некоторые советы по ускорению миграции.

Предварительные требования

Перед началом работы необходимо удостовериться что POD-ы Кафки и Java настроены корректно ресурсы.

Java Удостоверьтесь, что в yaml файле mybpm-api, правильно настроен environment JAVA_TOOL_OPTIONS.

Значение в "-Xms" и "-Xmx" должны быть одинаковы и составлять не более 75% от общей памяти выделенной на сам под. 50% самый безопасный и оптимальный вариант.

Пример. Если на POD выделено 10Gb, то этому параметру можно выделить не более 7680M или 7Gb (75%). Но лучше поставить 5120M (50%)

Kafka Удостоверьтесь, что в yaml файле kafka, правильно настроен environment KAFKA_HEAP_OPTS.

Правила такие же как для Java, но лимит 50% от памяти POD-а

Пример. Если на POD выделено 10Gb. То этому параметру нужно выделить 5120M или 5Gb (50%).

Основная часть

Самый простой способ увеличить скорость миграции - увеличить количество консьмеров (consumers), потребляющие сообщения из топика IN_MIGRATION

Кол-во консьюмеров насраивается в зукипере (ZooKeeper) в директории consumers. Чтобы найти эту директорию:

  1. Перейдите в ZooNavigator (адрес, на котором он разворачивается, смотрите в docker-compose файле для локалки это - http://localhost:10010)
  2. Перейдите в директорию mybpm
  3. Далее перейдите в директорию consumers
  4. Здесь лежат конфигурации всех коньсьюмеров mybpm-а, кол-во консьюмеров для миграции можно изменить в файле InMigration.workerCount

Адрес файла в zoonavigator-е "/mybpm/consumers/InMigration.workerCount"

Правила по установке консьюмеров

  1. Кол-во консьюмеров никогда не должно превышать количество партиций (partitions) топика (в данном случае топика IN_MIGRATION)
  2. Кол-во консьюмеров должно быть делителем числа партиции топика. Например, если в топике IN_MIGRATION 48 партиции, то возможное значение для консьюмеров: 1, 2, 4, 6, 8, 12, 24, 48.
  3. Обратите внимание кол-во консьюмеров напрямую зависит от выделенных ресурсов системе. Если памяти недостаточно кафке или Java, то даже увеличив кол-во консьюмеров, вы не ускорите миграцию.
  4. Лучший выбор постепенно увеличивать количество по следющему алгоритму:
    • По дефолту стоит 1 консьюмер, нужно увеличить до 2. Проверить нагрузку на сервер во время миграции.
    • Если нагрузка в рамках допустимого и миграции стала быстрее, то можно увеличить кол-во консьюмеров еще раз, учитывая вышеприведенные правила (при 48 партициях, следующие значения будут: 4, 6, 8, 12, 24, 48)
    • Повторять до тех пор, пока не найдете оптимальное значение (скорость перестала увеличиваться или нагрузка слишком большая)

Дополнительные способы

Увеличить скорость миграции можно также отключив трэкинг времени исполнения методов. Сделать это можно в конфиге в зукипере. Для этого нужно найти InMigrationConfig.

Адрес конфига в zoonavigator-е "/mybpm/configs/InMigrationConfig.txt"

В этом конфиге для параметра "trackTimings" нужно поставить значение false. Это даст небольшой прирост скорости.

Дополнительная информация

Чтобы посмотреть среднюю скорость миграцию, нужно выполнить SQL-команду:

SELECT (SUM(inserted_data_counter) / extract(epoch from MAX(finished_at) - MIN(started_at))) as avg_speed FROM in_migration.from_kafka_to_mongo_tracking WHERE started_at >= <время начало миграции>;

Этот запрос вернет кол-во записей в секунду.