Как я могу отслеживать повторяющиеся грабли, запускаемые планировщиком heroku? - PullRequest
4 голосов
/ 04 февраля 2012

Я только что получил счет за герою в прошлом месяце, и запланированные рейк-задания были довольно тяжелым бременем. Мы довольно рано находимся в процессе разработки, поэтому мы только что разработали некоторые грабли, чтобы выполнить работу в последнее время, и не особо беспокоились об их оптимизации.

Теперь мы хотим улучшить их производительность и время обработки их герою. Мы используем New Relic для мониторинга производительности веб-приложения, но, по-видимому, этот тип граблей по умолчанию игнорируется, и неясно, как это переопределить.

У кого-нибудь была похожая проблема? Как можно отслеживать запланированные задачи в режиме реального времени, чтобы отслеживать производительность, оптимизировать и не получать неожиданные счета?

Ответы [ 4 ]

7 голосов
/ 05 февраля 2012

Несмотря на то, что вы не можете хорошо контролировать рейк-задачи, есть несколько небольших вещей, которые вы можете сделать. Одним из них является использование регистрации. Выведите время начала и окончания задач в журналы, и затем вы сможете увидеть, что происходит в течение продолжительного времени. Если вы связываете это с чем-то вроде надстройки Papertrail, то позже вы можете провести дополнительный опрос.

Что касается запуска самих заданий, есть несколько способов запуска фоновых процессов, которые зависят от того, как они должны выполняться:

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

В качестве альтернативы, если вы смотрите на задания, которые требуют немного большего контроля или используют процесс синхронизации. По сути, это динамометр, работающий 24/7, который выполняет только другие задания с заданными интервалами и временем. Обычно это делается с помощью часового механизма. Недостатком этого подхода является то, что вам нужно постоянно платить за процесс синхронизации.

Третий подход, который может сработать, - это отложенное задание с опцией runat, позволяющей ставить в очередь задание, которое будет выполняться в будущем (и задания могут помещаться в очередь сами). Есть несколько проблем, связанных с этим, в которых сбой может убить всю цепочку, и вам понадобится работающий полный рабочий день для их обработки.

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

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

0 голосов
/ 26 февраля 2012

Не ответ на конкретный вопрос, но ... Одним из способов снижения накладных расходов является использование сервера Unicorn для того, чтобы несколько рабочих работали за одним dyno. Это зависит от вашей настройки, но большинство людей, которые потратили время на ее тестирование, могут комфортно запускать 3-4 рабочих процесса одновременно. Это огромный импульс в прояснении сигналов или задач. Только будьте осторожны, чтобы не максимально использовать выделенную память для dyno.

0 голосов
/ 05 февраля 2012

Вы можете заставить агента New Relic запускать в ваших задачах с граблями и сообщать об их производительности.

0 голосов
/ 05 февраля 2012

когда вы работаете на кедре heroku, есть способ получить бесплатную настройку для ваших работников.это не ответ на ваш вопрос о мониторинге, но в любом случае это может быть интересно: http://blog.nofail.de/2011/07/heroku-cedar-background-jobs-for-free/

...