Я использую Amazon Beanstalk для размещения моего приложения Laravel. Я создал специальную конфигурацию, так что моя очередь : прослушать будет автоматически перезапущен при развертывании с супервизором.Laravel queue: прослушивание занимает всю память сервера все время
[unix_http_server]
file=/tmp/supervisor.sock
chmod=0777
[supervisord]
logfile=/var/app/support/logs/supervisord.log
logfile_maxbytes=25MB
logfile_backups=2
loglevel=warn
pidfile=/var/run/supervisord/supervisord.pid
nodaemon=false
nocleanup=true
user=webapp
[program:laravel_queue]
command=php artisan queue:listen --queue=email,activity,purging,misca --memory=256 --env=production
directory=/var/app/current
stdout_logfile=/var/app/support/logs/laravel-queue.log
logfile_maxbytes=25MB
logfile_backups=2
redirect_stderr=true
autostart=true
autorestart=true
startretries=86400
Это прекрасно работает, и моя проблема возникает через день или слишком, что память моего сервера всегда достигает 95%!
Я проверил память и заметил множество http-процессов, которые были запущены в очередь: слушайте, но почему-то никогда не убивайте (обратите внимание, что все задания преуспели, без сбоев).
webapp 22923 0.0 0.4 673948 19032 ? S 18:10 0:00 /usr/sbin/httpd -D FOREGROUND
webapp 22926 0.0 0.8 674588 35512 ? S 18:10 0:00 /usr/sbin/httpd -D FOREGROUND
webapp 22929 0.0 0.4 673948 19032 ? S 18:11 0:00 /usr/sbin/httpd -D FOREGROUND
webapp 22931 0.0 0.9 674932 37576 ? S 18:11 0:00 /usr/sbin/httpd -D FOREGROUND
webapp 22932 0.0 0.4 673948 19032 ? S 18:11 0:00 /usr/sbin/httpd -D FOREGROUND
webapp 22934 0.0 0.8 674600 35536 ? S 18:11 0:00 /usr/sbin/httpd -D FOREGROUND
webapp 22935 0.0 0.8 674588 35512 ? S 18:11 0:00 /usr/sbin/httpd -D FOREGROUND
Почему эти http-процессы, которые я предполагаю, являются очередями: рабочие не заканчиваются?
Вы можете написать свой код своей работы? –
Ну, у меня есть несколько десятков рабочих мест, но они действительно ничего особенного не делают. Некоторые события вызова, которые запускают обработчики, а некоторые обработчики отправляют другие задания, которые попадают в очередь. В целом очередь никогда не завершает все задания, но эти процессы зомби остаются. – user391986
Хммм, я предполагаю, что процессы apache - это потоки, которые прослушивают входящий веб-трафик, хотя я ожидал бы, что владелец потоков будет apache, а не webapp. Если веб-сервер работает как webapp, то это имеет смысл. Я не _think_ Очереди Laravel используют apache для запуска - они запускаются в командной строке, не так ли? – stratedge