Laravel задание остается в состоянии «Обработка», хотя и завершено - PullRequest
2 голосов
/ 02 апреля 2020

У меня проблема с системой очередей laravel. В целях повышения производительности мы используем систему очередей laravel с amazons SQS для более сложных вычислений. Это прекрасно работает, по крайней мере, для большинства наших работ. Некоторые из них, где время необработанного вычисления составляет около 25 секунд, продолжают блокировать очередь в состоянии «Обработка» на 6 минут.

Мы записали в журнал полную функцию handle задания, и результат был прямо на любое время. На самом деле последний лог-оператор (конец функции) был напечатан через 20 секунд после входа в функцию. Данные были рассчитаны, как и ожидалось, и база данных была обновлена, но задание все еще было «Обработка».

enter image description here

После того, как мы намеренно потерпели крах в В конце функции-дескриптора вычисленные данные были сохранены идеально, но, очевидно, очередь также потерпела крах. Так что я думаю, что это должно быть что-то случайное после функции дескриптора. Может быть, что-то с выделенной памятью?

Конфигурация очереди - это конфигурация драйвера sqs по умолчанию:

'sqs' => array(
    'driver' => 'sqs',
    'key'    => env('AWS_KEY', 'secret'),
    'secret' => env('AWS_SECRET', 'secret'),
    'queue'  => env('AWS_SQS_QUEUE', 'secret'),
    'region' => env('AWS_SQS_REGION', 'secret'),
),

Редактировать: я обнаружил, что это не только очередь, но когда я выполнить задание в виде команды, появляется такое же поведение:

Я печатаю «Готово». как последний оператор в команде и после того, как она напечатана, консоль останавливается на несколько секунд, прежде чем вернуться к вводу консоли.

enter image description here

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

Я надеюсь, что любой из вас, ребята, знает, что вызывает такое поведение и как мы можем исправить это.

Заранее спасибо

1 Ответ

3 голосов
/ 16 апреля 2020

Хорошо, я нашел проблему.

Проблема была в том, что телескоп был включен. Поэтому после выполнения кода телескоп был занят, регистрируя все запросы и попадания в кеш.

После отключения телескопа больше не было задержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...