Gearman не работает при работе с Supervisord
Я тестирую Gearman на выделенном сервере заданий (Ubuntu 12.04) для моего проекта PHP (используя pecl/gearman в качестве реализации PHP).
Вручную это работает нормально: запуск клиента, добавление заданий и запуск одного или нескольких рабочих в отдельных оболочках работает как задумано. Теперь я хочу запустить рабочих с помощью Supervisord, но это приводит к множеству следующих ошибок в журнале Gearman:
WARNING [ 4 ] lost connection to client recv(peer has closed connection) 127.0.0.1:37126 -> libgearman-server/io.cc:608
ERROR [ 4 ] Failed while in _connection_read() -> libgearman-server/io.cc:489
По умолчанию это супервизор, я только что добавил программу:
[program:migration]
command=/path/to/script
process_name=%(program_name)s_%(process_num)02d
numprocs=10
stdout_logfile=/var/log/gearman.log
stderr_logfile=/var/log/gearman-error.log
stdout_logfile_maxbytes=1MB
environment=GEARMAN_USER=gearman
autostart=true
autorestart=true
user=gearman
stopsignal=KILL
Информация о процессе Gearman:
gearman 9802 0.0 0.0 476116 1780 ? Ssl 12:18 0:00 /usr/sbin/gearmand --pid-file=/var/run/gearman/gearmand.pid --user=gearman --daemon --log-file=/var/log/gearman-job-server/gearman.log --listen=127.0.0.1
При тестировании супервизора:
supervisord -n -c /etc/supervisor/supervisord.conf
Я застрял здесь, так как сообщение об ошибке на самом деле не возвращает результаты в Google. Любая помощь приветствуется.
1 ответ
Натолкнулся на ту же ошибку почти в том же стеке сервера и нашел решение. Выдается предупреждение и ошибка, потому что вы пытаетесь отправить работу незарегистрированному работнику. Проверьте имя вашего работника и проверьте с помощью ps -ax в командной строке, работает ли он.
Отправка задания несуществующему работнику в командной строке с помощью gearmand -f не даст вам никакой обратной связи. Выполнение этого с использованием модуля pecl приводит к ошибке.
PS: я знаю, что вы уже спрыгнули с корабля и двинулись вместе с Бинстальком, но, возможно, это может помочь кому-то еще