セロリのデーモンに問題があります。変更をプッシュするたびにデーモンを再起動するためにファブリックデプロイメントスクリプトを使用しますが、何らかの理由でこれが大きな問題を引き起こしています。セロリのデーモンに関する問題
デプロイスクリプトが実行されるたびに、セロリプロセスは疑似デッド状態のままになります。彼らは(残念ながら)まだrabbitmqからタスクを消費しますが、実際には何もしません。紛らわしいことに、この状態ではすべてが「うまくいく」ように見えますが、celeryctlのステータスはオンラインで1つのノードしか表示されず、ps aux | grep celeryは2つの実行中のプロセスを表示します。
ただし、手動で以下のエラーが発生し停止/etc/init.d/celeryd実行しよう:
start-stop-daemon: warning: failed to kill 30360: No such process
この状態でcelerydスタートを実行しようとしているときは正常に動作しているように見えますが、実際にはありません何もない。この問題を解決する唯一の方法は、実行中のセロリプロセスを手動で停止してから、それらを再度開始することです。
ここで何が起こっているのですか?私たちは完全な確認はしていませんが、何も展開されていない数日後に問題が発達していると考えています(現在はテストサーバーです)。
デプロイスクリプトも使用しますが、ファブリックでは使用しません。単にpythonからシェルコマンドceleryd restartを実行するだけです。すべて正常に動作します。 私は、古いバージョンのubuntuを持つceleryd.shスクリプトのいくつかの問題を知っています。取得プロセスのためのbash命令のために10.10未満です。 実行しているOSはどれですか?どのバージョンのセロリ? –
スクリプトはどのくらい正確にデーモンを再起動しますか?それはちょうど 'kill -9'または同様のものを放つのですか? –
init.dスクリプトのstopコマンドを起動します。これは、セロリのgithub contribファイルから利用可能なインクルードされたinit.dスクリプトです。それは、停止してから開始するのではなく、再起動をトリガしていましたが、私は暗闇の中でそれをショットとして変更しました。 init.dスクリプトはstart-stop-daemonコマンドを呼び出します – John