2013-05-07 2 views
0

Я использую Resque в приложении Heroku для фоновых заданий, и мне интересно, есть ли способ быстрее обработать заданное задание.Процесс Resque быстрее работает в Heroku?

Например, есть несколько заданий, связанных с захватом большого файла (20 ГБ +), считыванием его содержимого и разбиением его на записи в базе данных (миллионы записей).

Это происходит в одной работе.

Бросание большего количества рабочих не работает, поскольку для работы используется только один работник. Так есть ли способ сделать работу данного работника быстрее?

ответ

0

Одним из вариантов было бы использование новых двухдисковых процессоров 2x, которые имеют двойной процессор и двойную память для вашего рабочего.

1

Без какого-либо кода трудно сказать, но, возможно, есть возможность оптимизировать UPDATE или INSERT, которые он создает?

Если это в цикле, как

csv_file.each_line do |line| 
    Record.create ... 
end 

Вы можете улучшить производительность этого, дозированием его так, что он читает, скажем 1000 строк из файла, а затем делает вставки 1000 строк в БД ,

В этом SO answer показано, как использовать создание для пакетных вставок.

Смежные вопросы