1

数日前、tornadowebフレームワーク上に作成したWebアプリが、upstartを介して停止または再起動しないことを知りました。Upstartはハングし、何もしません。

問題を調査したところ、upstartが間違ったPIDを受信したため、webappデーモンで1回しか実行できず、他に何もできないことがわかりました。

Straceは、デーモンが2回ではなく4回(!)のclone()呼び出しを行うことを示しています。

1週間前は何でも良かったし、webappは新興企業によって完全かつ正しく管理されていました。

OSはUbuntu10.04.03LTSです(数週間前のように)。

それを修正する方法はありますか?

PS:「expectfork |デーモン」ディレクティブについて知っていますが、何も変更されません;)

4

2 に答える 2

1

沈黙してすみません。

問題の調査は、デーモンに2つのフォークを追加するuuidpythonライブラリに関する知識で終了しました。このlibを削除すると、tornadoデーモンが正しく機能するようになりました。

代替の回答は、それ自体ではデーモン化できないデーモンとして任意のコンソールツールを実行できる監視対象でした。

于 2012-05-31T16:21:36.650 に答える
0

よく使用されるソリューションは2つあります

1つ目は、アプリケーションにそのpidを正直に報告させることです。アプリケーションに実際のpidをpidfileに書き込むように強制できる場合は、そこからpidを取得できます。

2つ目はもう少し複雑です。スクリプト呼び出し用に特定の環境変数を追加できます。この環境変数は、フォークが環境をクリアしない場合、およびファイルを解析することですべてのプロセスを見つけることができる場合よりも、すべてのフォークに残り/proc/*/environます。

環境によってプロセスを見つけるためのより簡単な解決策があるはずですが、私にはわかりません。

于 2011-12-15T07:41:00.137 に答える