-
Notifications
You must be signed in to change notification settings - Fork 77
Максимум скорости на историю
Необходимо за максимально короткое время конвертировать историю огромную хранилища. Предположим, что в оборудовании у нас нет ограничений или мы можем временно привлечь неограниченные ресурсы.
Суть: создать множество копий хранилища чтобы параллелизировать получение версий.
- Подключаем на том же сервере (или на отдельном сервере в той же сети) - отдельный SSD-диск
- Поднимаем 3 сервиса хранилищ конфигураций 1С на разных портах - настроенных на разные каталоги диска
- Настраиваем кэширование сервера хранилищ в зависимости от количества потоков получения из хранилища
- Копируем текущее состояние хранилища в 3 разных каталога - т.о. на одном SSD-диске 3 независимых копии хранилища. Следите за очередью к диску - может быть 3 шт. - это много, но крутые диски могут и больше!
- Сервер хранилищ - многопоточный - но у него есть ограничение по памяти.
Суть: необходимо избегать копирование данных с диска на диск - поэтому располагаем хранилище и каталог выгрузок на одном диске
- Размещаем каталог репозитория и каталог выгрузки на одном SSD-диске.
- SSD-диск должен быть отдельным от того, на котором располагается сервер хранилищ 1С, если на одном сервере или сеть между серверами должна быть "прямая".
- В карточке настройки хранилища:
- В Начальной версии - указываем очень большое число, например
100000
- т.о. регламентное задание не будет пытаться выгрузить версии из хранилища и будет выполнять только сервисные действия (запуск коммитов, перезапуски итд). - В Версии окончания укажите любое число - это ограничит рег.задание от получения отчета по хранилищу каждый раз - ведь нам нужно быстро догнать историю...
- В Начальной версии - указываем очень большое число, например
- Укажите расписание запуска "Каждый день, каждые 60 секунд"
- Устанавливаем ограничения "Количества подготавливаемых версий" в настройках из расчета Объем диска / Размер выгрузки см тут.
- Создаем пользователей в каждой копии хранилища 1С с именами "Выгрузка1", "Выгрузка2"... "Выгрузка-N" - из расчета того сколько сможет выдержать параллельных потоков. Для простоты посчитать можно так:
4Гб / Размер cf версии
, например версия конфигурации 500Мб - значит можно начать с 8 потоков на один сервис хранилища, а дальше - следить за памятью сервиса. - Для каждого пользователя, для каждого сервиса хранилища 1С создаем настройку "Копии хранилища" - в нашем примере 24 копии - для каждого настраиваем расписание запуска "каждый день, каждые 60 секунд"
- Укажите расписание запуска "Каждый день, каждые 60 секунд"
Суть: важно определиться - используем ли выгрузку изменений или нет.
- Для Выгрузки изменений настраиваем для каждой очереди выгрузки рабочие диапазоны версий.
- Первая очередь - от 1 версии до 50
- Вторая очередь - от 51 до 100
- Третья очередь - от 101 до 150
- Ограничением количества очередь - является размер диска, куда выгружаются версии
- Не используем Выгрузку изменений - создаем столько очередь выгрузки сколько копий хранилищ - 24 шт.
- Укажите расписание запуска очереди "Каждый день, каждые 60 секунд"
- Настраиваем количество очередей загрузки метаданных, в нашем примере - 10-20.
- Для каждой очереди загрузки будет запущена конвертация в формат EDT - нам необходимо чтобы было доступно 8 ядер процессора на одну очередь
- Укажите расписание запуска очереди "Каждый день, каждые 60 секунд"
Суть: мы предположили, что у нас нет ограничений по оборудованию, поэтому посчитаем сколько нам необходимо.
- 3-4 CPU на сервис хранилища
- 24/2 = 12 CPU на получение из копий хранилищ
- 1 CPU на очередь выгрузки
- 80 CPU - на 10 очередей загрузки
ИТОГО: 110-130 CPU
- 3-4 Гб на сервис хранилища 1С, реально будет работать в диапазоне 2-3Гб.
- 1Гб на очередь выгрузки
- 4Гб на очередь загрузки (с учетом того, что конфигурация cf - всего 500Мб), на 10 очередей
ИТОГО: 80-90 Гб RAM
Конечно, в любом проекте есть ограничения. Определите, какие ограничения у вас:
- SSD (очередь к диску, размер)
- CPU
- RAM
Рассчитайте максимальную загрузку сервера.
-
Дополнительные возможности