2016-03-11 6 views
1

Я использую 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-процессы, которые я предполагаю, являются очередями: рабочие не заканчиваются?

+1

Вы можете написать свой код своей работы? –

+0

Ну, у меня есть несколько десятков рабочих мест, но они действительно ничего особенного не делают. Некоторые события вызова, которые запускают обработчики, а некоторые обработчики отправляют другие задания, которые попадают в очередь. В целом очередь никогда не завершает все задания, но эти процессы зомби остаются. – user391986

+1

Хммм, я предполагаю, что процессы apache - это потоки, которые прослушивают входящий веб-трафик, хотя я ожидал бы, что владелец потоков будет apache, а не webapp. Если веб-сервер работает как webapp, то это имеет смысл. Я не _think_ Очереди Laravel используют apache для запуска - они запускаются в командной строке, не так ли? – stratedge

ответ

0

В то время как я имею такой же вопрос, есть atttribute для программы конфигурации для супервизора, что вам не хватает

Попробуйте добавить numprocs, а затем, сколько индивидуальный процесс, который вы хотели бы запустить

Reference Laravel's Example Supervisor Config in the Documentation