Назад | Перейти на главную страницу

Повторное задание SQS с 30-минутными интервалами

У нас есть ежедневное задание cron в 18:00 для рассылки массовых писем, которое обычно работает нормально, кроме одного дня на прошлой неделе, когда задание выполнялось ровно в 18:00:00, 18:30:00, 19:00:00, и 19:30:00, в результате чего пользователи получили четыре копии одних и тех же писем.

Я загрузил полные журналы экземпляра EC2 и вижу, что запросы действительно были /worker/schedule в это время (мы используем laravel-aws-worker так что это конечная точка, на которую идут все задания cron), однако их коды состояния были все 200! Что я считаю странным, потому что я предполагал, что SQS будет повторять только «неудачные» задания, то есть те, которые имеют код 4xx или 5xx.

Я также не могу найти ничего ни в Интернете о том, откуда пришли эти тридцать минут, ни в наших настройках SQS. В настройках нашей очереди задан тайм-аут видимости по умолчанию 12 часов, период хранения сообщений 14 дней, задержка доставки 0, время ожидания получения сообщения 0 и максимальное количество получателей 10. (Последнее также интересно, потому что, если задание постоянно терпит неудачу, я бы ожидал его нужно запустить 10 раз ... если только не получилось с четвертой попытки).

Загрузка ЦП экземпляра EC2 резко возросла до ~ 30% во время выполнения задания, тогда как обычно это всего около 15%, но я ожидал, что он все еще сможет справиться с задачами на 30%, и нет никаких предупреждений в журналах ошибок относительно высокой загрузки ЦП.

Есть идеи, что могло вызвать это, или почему 30-минутные интервалы? Я предполагаю, что это должно быть что-то не так, но тогда как они вернули 200 в access_log?