web-dev-qa-db-ja.com

Supervisordで実行しているときにギアマンが機能しない

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で結果を返さないので、私はここでちょっと立ち往生しています。どんな助けでも大歓迎です。

1
Peter Kruithof

ほぼ同じサーバースタックで同じエラーが発生し、解決策が見つかりました。登録されていないワーカーにジョブを送信しようとしたため、警告とエラーがスローされます。ワーカーの名前を確認し、実行されているかどうかをコマンドラインでps-axで確認します。

Gearmand -fを使用してコマンドラインで存在しないワーカーにジョブを送信しても、フィードバックはありません。 peclモジュールを使用して実行すると、エラーが発生します。

PS:あなたはすでに船に飛び乗って、Beanstalkdと一緒に移動したことを知っていますが、おそらくそれは他の誰かを助けることができます。

3
Yo-han