Импорт больших данных из Vanilla в Discourse (снижение скорости)

У нас есть дамп данных из Discourse объёмом 26 ГБ:
1,3 миллиона пользователей
3 миллиона тем
21 миллион сообщений

Наша проблема заключается в том, что мы импортируем данные со скоростью 500 тысяч в минуту, но через несколько минут скорость падает до 2 тысяч в минуту.

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

Привет, Джей. Мы используем экземпляр c5.4xlarge от AWS; сначала скорость составляет 500 тыс. в минуту, но через несколько минут она замедляется.

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

Да, при перезапуске оно просто пропускает уже импортированные данные, но тот же процесс со временем замедляется :frowning:

Спасибо за подтверждение. :frowning: Если скорость продолжит снижаться, на обработку 31 миллиона записей уйдёт примерно месяц. Есть какие-то предложения, как это улучшить? Или так и задумано?

Вам нужен процессор с высокой скоростью работы в одном ядре, что довольно сложно найти в облаке.

Или попробуйте скрипт массового импорта. Importers for large forums

Существует скрипт для Vanilla: discourse/script/bulk_import/vanilla.rb at main · discourse/discourse · GitHub

Мы используем c5.4xlarge от AWS
vCPU — 16, память (ГБ) — 32
Хватит ли этого или стоит обновить?

Конечно, попробуем этот скрипт для массовой импорта. Спасибо!

Если вы хотите запустить обычный скрипт импорта как можно быстрее, вам понадобится процессор из верхней части списка на PassMark CPU Benchmarks - Single Thread Performance. Не знаю, какие результаты показывают vCPU на AWS или у любого другого облачного провайдера. :man_shrugging:

Вы хотите использовать массовый импортер.

Каждый раз, когда я пытаюсь выполнить массовый импорт, процесс останавливается именно на этом месте. Так как трассировка стека обрывается на идентификаторах категорий, я попробовал заменить -1 на 0:

@last_imported_category_id = imported_category_ids.max || -1
на
@last_imported_category_id = imported_category_ids.max || 0

Я даже попытался удалить категорию с идентификатором -1 и повторить импорт, но безрезультатно.

Если вы можете нанять дополнительную помощь, свяжитесь с @pfaffman по адресу https://www.literatecomputing.com/ .