Skip to content

Максимум скорости на историю

GitConverter edited this page Nov 5, 2020 · 3 revisions

Цель

Необходимо за максимально короткое время конвертировать историю огромную хранилища. Предположим, что в оборудовании у нас нет ограничений или мы можем временно привлечь неограниченные ресурсы.

Настройка сервера хранилищ 1С

Суть: создать множество копий хранилища чтобы параллелизировать получение версий.

  • Подключаем на том же сервере (или на отдельном сервере в той же сети) - отдельный SSD-диск
  • Поднимаем 3 сервиса хранилищ конфигураций 1С на разных портах - настроенных на разные каталоги диска
  • Настраиваем кэширование сервера хранилищ в зависимости от количества потоков получения из хранилища
  • Копируем текущее состояние хранилища в 3 разных каталога - т.о. на одном SSD-диске 3 независимых копии хранилища. Следите за очередью к диску - может быть 3 шт. - это много, но крутые диски могут и больше!
  • Сервер хранилищ - многопоточный - но у него есть ограничение по памяти.

Настройка репозитория

Суть: необходимо избегать копирование данных с диска на диск - поэтому располагаем хранилище и каталог выгрузок на одном диске

  • Размещаем каталог репозитория и каталог выгрузки на одном SSD-диске.
  • SSD-диск должен быть отдельным от того, на котором располагается сервер хранилищ 1С, если на одном сервере или сеть между серверами должна быть "прямая".
  • В карточке настройки хранилища:
    • В Начальной версии - указываем очень большое число, например 100000 - т.о. регламентное задание не будет пытаться выгрузить версии из хранилища и будет выполнять только сервисные действия (запуск коммитов, перезапуски итд).
    • В Версии окончания укажите любое число - это ограничит рег.задание от получения отчета по хранилищу каждый раз - ведь нам нужно быстро догнать историю...
  • Укажите расписание запуска "Каждый день, каждые 60 секунд"

Настройка получения версий

  • Устанавливаем ограничения "Количества подготавливаемых версий" в настройках из расчета Объем диска / Размер выгрузки см тут.
  • Создаем пользователей в каждой копии хранилища 1С с именами "Выгрузка1", "Выгрузка2"... "Выгрузка-N" - из расчета того сколько сможет выдержать параллельных потоков. Для простоты посчитать можно так: 4Гб / Размер cf версии, например версия конфигурации 500Мб - значит можно начать с 8 потоков на один сервис хранилища, а дальше - следить за памятью сервиса.
  • Для каждого пользователя, для каждого сервиса хранилища 1С создаем настройку "Копии хранилища" - в нашем примере 24 копии - для каждого настраиваем расписание запуска "каждый день, каждые 60 секунд"
  • Укажите расписание запуска "Каждый день, каждые 60 секунд"

Настройка выгрузки в xml

Суть: важно определиться - используем ли выгрузку изменений или нет.

  • Для Выгрузки изменений настраиваем для каждой очереди выгрузки рабочие диапазоны версий.
    • Первая очередь - от 1 версии до 50
    • Вторая очередь - от 51 до 100
    • Третья очередь - от 101 до 150
    • Ограничением количества очередь - является размер диска, куда выгружаются версии
  • Не используем Выгрузку изменений - создаем столько очередь выгрузки сколько копий хранилищ - 24 шт.
  • Укажите расписание запуска очереди "Каждый день, каждые 60 секунд"

Настройка загрузки метаданных

  • Настраиваем количество очередей загрузки метаданных, в нашем примере - 10-20.
  • Для каждой очереди загрузки будет запущена конвертация в формат EDT - нам необходимо чтобы было доступно 8 ядер процессора на одну очередь
  • Укажите расписание запуска очереди "Каждый день, каждые 60 секунд"

Количество ядер CPU

Суть: мы предположили, что у нас нет ограничений по оборудованию, поэтому посчитаем сколько нам необходимо.

  • 3-4 CPU на сервис хранилища
  • 24/2 = 12 CPU на получение из копий хранилищ
  • 1 CPU на очередь выгрузки
  • 80 CPU - на 10 очередей загрузки

ИТОГО: 110-130 CPU

RAM для сервера

  • 3-4 Гб на сервис хранилища 1С, реально будет работать в диапазоне 2-3Гб.
  • 1Гб на очередь выгрузки
  • 4Гб на очередь загрузки (с учетом того, что конфигурация cf - всего 500Мб), на 10 очередей

ИТОГО: 80-90 Гб RAM

РЕЗЮМЕ

Конечно, в любом проекте есть ограничения. Определите, какие ограничения у вас:

  • SSD (очередь к диску, размер)
  • CPU
  • RAM

Рассчитайте максимальную загрузку сервера.

Clone this wiki locally