Часто опросы происходят с задержкой работы - PullRequest
1 голос
/ 14 февраля 2020

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

Одна вещь, которую я заметил в вывод pg: outliers в нашей производственной базе данных prop_exec_time для этого запроса составляет 4,5%, и за 45 часов произошло почти 1,8 миллиона вызовов.

Запрос:

UPDATE "delayed_jobs" SET locked_at = $1, locked_by = $2 WHERE id IN (SELECT id FROM "delayed_jobs" WHERE ((run_at <= $3 AND (locked_at IS NULL OR locked_at < $4) OR locked_by = $5) AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT $6 FOR UPDATE) RETURNING *

В соответствии с отложенным заданием, опросы по умолчанию проводятся каждые 5 секунд, но это происходит, даже если задание не выполняется. В настоящее время в нашем приложении нет дополнительной настройки.

Я думаю, я могу переопределить время по умолчанию для delayed_job, это окажет какое-либо влияние? Любые предложения по уменьшению количества звонков

1 Ответ

0 голосов
/ 14 февраля 2020

prop_exec_time составляет 4,5% для этого запроса и почти 1,8 миллиона вызовов произошло за 45 часов.

4,5% не кажется возмутительным. Есть ли здесь проблема, которую нужно решить?

Сколько заданий прошло через очередь за эти 45 часов? Была ли очередь за это время полностью пустой? Опрос проводится каждые 5 секунд на одного работника , поэтому для получения 1,8 миллиона вызовов в пустой очереди за 45 часов потребуется 50 работников. У вас их так много?

Думаю, я могу переопределить время по умолчанию для delayed_job, это окажет какое-либо влияние?

Да, но это также задержит отзывчивость чтобы ваши работники находили новую работу.

...