PHPプロジェクト(pecl/gearmanをPHP実装)として使用)の専用ジョブサーバー(Ubuntu 12.04)でGearmanをテストしています。
手動でこれは正常に機能します。クライアントの起動、ジョブの追加、および個別のシェルでの1つ以上のワーカーの実行は意図したとおりに機能します。ここで、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
スーパーバイザーconfはデフォルトです、私はちょうどプログラムを追加しました:
[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 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で結果を返さないので、私はここでちょっと立ち往生しています。どんな助けでも大歓迎です。
ほぼ同じサーバースタックで同じエラーが発生し、解決策が見つかりました。登録されていないワーカーにジョブを送信しようとしたため、警告とエラーがスローされます。ワーカーの名前を確認し、実行されているかどうかをコマンドラインでps-axで確認します。
Gearmand -fを使用してコマンドラインで存在しないワーカーにジョブを送信しても、フィードバックはありません。 peclモジュールを使用して実行すると、エラーが発生します。
PS:あなたはすでに船に飛び乗って、Beanstalkdと一緒に移動したことを知っていますが、おそらくそれは他の誰かを助けることができます。