@knotik

Как запустить несколько очередей в Laravel?

Захотел на своём сайте задействовать несколько очередей для обработки заданий.
В консоле прописываю php artisan queue:work, запускаю обработчик очереди, всё прекрасно работает.
Открываю второе и третье окно консоли аналогично запускаю в каждом воркеры, тоже всё работает.
Все задачи при выполнении распределяются между тремя воркерами, всё как надо.

Но когда я запускаю 4ый воркер, у меня начинает жутко тормозить весь сайт, страницы вместо 1-2сек открываются по 20-40сек или вообще выскакивает ошибка превышение таймаута ожидания. Отваливается сервис web socket pusher.
И при этом воркеры находятся в простое без задач, просто запущены.
При запуске 5го воркера сайт полностью лежит.

Первое что в голову приходит это не достаточно ресурсов, но и оперативы полно и проц грузится на 1-2% в простое, но при этом php уже не работает сайт лежит.

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

Почитал интернет, вроде ограничений на количество воркеров в laravel не где нет, chatgpt тоже ничего не подсказал.

В чём может быть проблема?
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 1
@knotik Автор вопроса
Коллеги спасибо за помощь, но ситуация решилась другим способом
Тоже по подсказке, до этого фиг догадаешься)
На сервере крутится proxmox, там в качестве виртуалки стоит ubuntu, а уже на ubuntu стоят docker контейнер с laravel.
Раньше на ubuntu в proxmox было выделено 2 сокета по 20 ядер, я исправил на 1 сокет, и всё заработало, запускается 10 воркеров и всё остальное не тормозит.

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

Войдите, чтобы написать ответ

Похожие вопросы