Производительность заданий Resque

Моя работа Resque в основном берет хэш параметров и сохраняет его в БД. В процессе он выполняет несколько операций чтения и записи.

Эти R/W занимают ок. Всего 5 мс на моей локальной машине и немного больше на Heroku (думаю, это из-за общей БД).

Однако скорость обработки очереди очень низкая (около 2-3 заданий в секунду). Что может быть причиной этого?

Спасибо.


person Martin    schedule 30.06.2011    source источник


Ответы (1)


Проверить наличие нового задания, заблокировать задание, выполнить задание, отметить его как завершенное, найти новое задание.

Вы можете обнаружить, что переговоры о получении новой работы, доступе к Redis и т. д. вызывают много накладных расходов. Если ваша задача длится всего 5 мс, она, вероятно, может жить внутри цикла запрос-ответ. Фоновые задания хороши, когда выполнение задачи может значительно увеличить время отклика, очень маленькие задания, как правило, не стоят затраченных усилий.

person Douglas F Shearer    schedule 30.06.2011
comment
Я проверил рабочие журналы с VVERBOSE=1, и действительно, вы правы. ** [14:37:49 2011-06-30] 11420: Проверка параметров ** [14:37:50 2011-06-30] 11420: Найдено задание по параметрам ** [14:37:50 2011-06- 30] 11420: got: (Задание{параметры} кажется, что включение питания вызывает задержку. - person Martin; 30.06.2011
comment
Хороший вопрос. Я не использовал resque/delayed_job достаточно, чтобы полностью понять точный источник несоответствия между тысячами заданий в секунду, в которых выполняются сравнения, и 1 с заданиями в секунду, которые выполняются на героку. - person ; 28.08.2013