Laravel - работники очереди, высокая загрузка ЦП

php laravel amazon-web-services amazon-sqs supervisord

751 просмотра

1 ответ

3882 Репутация автора

У меня есть приложение Laravel (в Forge), которое отправляет сообщения в SQS. Затем у меня есть еще одно окно в Forge, на котором работает Supervisor с работниками очереди, которые используют сообщения из SQS.

Прямо сейчас у меня есть только один рабочий-демон, который обрабатывает определенный поток данных из SQS. Когда появляются сообщения, их обработка занимает некоторое время - от 30 до 60 секунд. Использование памяти на устройстве в порядке, но процессор начинает работать почти мгновенно, а затем все становится медленнее.

Есть ли способ справиться с этим? Должен ли я вместо этого отправлять много небольших работ (которые могут быть использованы несколькими работниками), а не одну большую работу, которая не может быть разделена между работниками?

Также я отметил, что Supervisor использует только одно из двух моих ядер. Любой способ использовать это оба?

Автор: djt Источник Размещён: 18.07.2016 04:23

Ответы (1)


1 плюс

1246 Репутация автора

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

Чтобы ответить на ваш вопрос, я вижу два возможных способа решения вашей проблемы.

  1. Параллельное программирование . Сделайте так, как есть, и посмотрите, можно ли распараллелить большую задачу. (см. это ). Если это поддерживается, распараллелите код, чтобы убедиться, что каждое ядро ​​выполняет определенную часть вашей большой задачи. Наконец, соберите результаты в одно координирующее ядро ​​и соберите окончательный результат. (дополнительно: это может быть эффективно сделано, если рассматривается программирование на GPU)
  2. Отправка небольших работ (как указано в вопросе): это хороший подход, если вы можете управлять несколькими работниками, работающими над небольшими задачами, и, наконец, существует механизм для координации всего вместе. Это может быть организовано как настройка Master-Slave. Это сделало бы все простым (потому что распараллелить проблему немного сложно), но вам нужно все координировать.
Автор: Keet Sugathadasa Размещён: 11.09.2018 03:37
Вопросы из категории :
32x32