Всем привет! Суть проблемы вот такая, Стартую при помощи supervisord N-ное количесвто воркеров (воркеры слушают очередь beanstalkd)! При старте все отлично! Процессы начинают работать как только в очередь падают сообщения (на решение каждого сообщения уходит 5 минут), но проблема в том что через 1.5 минуты процесс выплевывает обратно в очередь сообщение и тут же его забирает! Не могу опнять в чем беда! Подскажите пожалуйста куда смотреть! Заранее спасибо
Неа! Сейчас поднял то же самое окружение на локальном компьютере запустил и все работает на ура! но вот на сервере нет. Код (Text): 2016-08-22 14:27:41,642 INFO daemonizing the supervisord process 2016-08-22 14:27:41,643 INFO supervisord started with pid 19627 2016-08-22 14:27:42,645 INFO spawned: 'worker_00' with pid 19629 2016-08-22 14:27:42,646 INFO spawned: 'worker_01' with pid 19631 2016-08-22 14:27:43,709 INFO success: worker_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2016-08-22 14:27:43,709 INFO success: worker_01 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2016-08-22 14:28:25,751 WARN received SIGTERM indicating exit request 2016-08-22 14:28:25,752 INFO waiting for worker_00, worker_01 to die 2016-08-22 14:28:25,754 INFO stopped: worker_00 (terminated by SIGKILL) 2016-08-22 14:28:25,754 INFO stopped: worker_01 (terminated by SIGKILL)
А логи выполнения таска? Похоже что он идет в работу, падает с ошибкой и потому не успевает удалиться из очереди, supervisor воркер перезагружает, он вновь берет таск, рушится и так по кругу )
Так проблему с залипанием тасков решил. Дело было в том что ЯП который запускался в фоне на сервере имел ограничение на время выполнения... Вот и отваливался с ошибкой и возвращал сообщение в очередь. Сейчас другая ошибка, точнее ошибок нет.... задачи выполняются правильно, но файл который должен создаться с результатами работы скрипта он не создается!!!! Права смотрел все ок. Вот логи запуска supervisord Код (Text): root@debian:/home/at# tail -f /var/log/supervisor/supervisord.log 2016-08-22 16:43:35,385 WARN Included extra file "/etc/supervisor/conf.d/test.conf" during parsing 2016-08-22 16:43:35,414 INFO RPC interface 'supervisor' initialized 2016-08-22 16:43:35,414 WARN cElementTree not installed, using slower XML parser for XML-RPC 2016-08-22 16:43:35,414 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2016-08-22 16:43:35,415 INFO daemonizing the supervisord process 2016-08-22 16:43:35,416 INFO supervisord started with pid 8509 2016-08-22 16:43:36,419 INFO spawned: 'worker_00' with pid 8513 2016-08-22 16:43:36,422 INFO spawned: 'worker_01' with pid 8518 2016-08-22 16:43:37,499 INFO success: worker_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2016-08-22 16:43:37,499 INFO success: worker_01 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) А вот натсройки *.conf Код (Text): [program:worker] command=/var/www/srtep/yii source-worker process_name=%(program_name)s_%(process_num)02d numprocs=2 directory=/var/www/srtep stdout_logfile=/var/log/worker-test.log autostart=true autorestart=true user=www-data umask=002 stopsignal=KILL
Ещё раз. Если скрипт что-то не создает, не берет или не удаляет, при чем тут supervisor? Он только следит за тем что бы процесс был запущен. Всё.
Ну да это понятно! Проблема из первоого моего сообщения решена! Спасибо! ps далее я просто описал следующую проблему, типа что может быть если файл не создается. Модет я в конфигах что то напортачил... вот и выложил конфиги! Всё!
Смотри еще раз. Проблема в них с вероятнотью 99%. От чьего имени стартуют процессы? Какие права у самого пользователя? Какие права у него на конечную папку? Глобально что на папке выставлено? Если просто руками попробовать создать файлик в тестовом скрипте - он создастся? Вообще сейчас из-за таких вот закидонов стало модным разворачивать на серваках виртуалки. Позволяет иметь 100% идентичные локальный и внешний инстансы. Позволяет настраивать горизонтальное масштабирование внутри одной железки, параллеля запросы и все такое. Благо, современные виртуалки не те, что были лет 15 назад. Аппаратная паравиртуализация на уровне процессора и прочие ништяки гарантируют отменное быстродействие.
Классика жанра А как часто об эти грабли бьются головой те, кто кодит под виндой, а разворачивается под линупсом...ммм...