Захотел на своём сайте задействовать несколько очередей для обработки заданий.
В консоле прописываю php artisan queue:work, запускаю обработчик очереди, всё прекрасно работает.
Открываю второе и третье окно консоли аналогично запускаю в каждом воркеры, тоже всё работает.
Все задачи при выполнении распределяются между тремя воркерами, всё как надо.
Но когда я запускаю 4ый воркер, у меня начинает жутко тормозить весь сайт, страницы вместо 1-2сек открываются по 20-40сек или вообще выскакивает ошибка превышение таймаута ожидания. Отваливается сервис web socket pusher.
И при этом воркеры находятся в простое без задач, просто запущены.
При запуске 5го воркера сайт полностью лежит.
Первое что в голову приходит это не достаточно ресурсов, но и оперативы полно и проц грузится на 1-2% в простое, но при этом php уже не работает сайт лежит.
Подумал что может это особенность локальной машины, и выгрузил это на сервер с 2мя процессорами 36 ядер, там тоже сайт ложиться от 4х запущеных воркеров.
Почитал интернет, вроде ограничений на количество воркеров в laravel не где нет, chatgpt тоже ничего не подсказал.
JhaoDa, как я и писал, потребление 1-2% процессора, и оперативы ещё очень много пустой
всё находится в простое, просто запускаю 4ый воркер, и сайт перестаёт отвечать на внешние запросы
knotik, ну тогда может вы упираетесь в базу данных? упереться в базу данных можно локами, коннектами, r/w и миллионами вещей. как бы на вскидку в что 99% - проблема ваш код.
Коллеги спасибо за помощь, но ситуация решилась другим способом
Тоже по подсказке, до этого фиг догадаешься)
На сервере крутится proxmox, там в качестве виртуалки стоит ubuntu, а уже на ubuntu стоят docker контейнер с laravel.
Раньше на ubuntu в proxmox было выделено 2 сокета по 20 ядер, я исправил на 1 сокет, и всё заработало, запускается 10 воркеров и всё остальное не тормозит.
Как подобное сделать на WSL на винде я не знаю, но оно мне и не нужно, на тестовой машине мне и 3х воркеров предостаточно
Коллеги спасибо за помощь, но ситуация решилась другим способом
Тоже по подсказке, до этого фиг догадаешься)
На сервере крутится proxmox, там в качестве виртуалки стоит ubuntu, а уже на ubuntu стоят docker контейнер с laravel.
Раньше на ubuntu в proxmox было выделено 2 сокета по 20 ядер, я исправил на 1 сокет, и всё заработало, запускается 10 воркеров и всё остальное не тормозит.
Как подобное сделать на WSL на винде я не знаю, но оно мне и не нужно, на тестовой машине мне и 3х воркеров предостаточно