33

私は、ubuntu 12.04でSupervisor(3.0a12)を使用して、phpギアマンワーカーを管理しています。時々、労働者は彼らが大量のCPUとRAMを使用する奇妙な状態に巻き込まれます。この問題を理解している間、スーパーバイザーがワーカーを自動的に強制終了して更新するようにするとよいと思いました。http://supervisord.org/configuration.html構成ドキュメントを調べましたが、これを可能にするオプションは見当たりませんでした。

監督者が管理するすべてのプロセスを定期的に再開することが可能かどうか誰かが知っていますか?

4

3 に答える 3

34

crontabを使用して、コマンドを直接supervisorctlに渡すことができます。たとえば、次の場合、20分ごとにプロセスが再開されます。

0,20,40 * * * * /path/to/supervisorctl restart [supervisor_process]
于 2013-07-27T06:28:43.420 に答える
28

このsuperlanceパッケージは、スーパーバイザー用のmemmonプラグインを提供します。memmonスーパーバイザー制御下のプログラムのメモリー使用量をモニターします。

memmonスーパーバイザイベントリスナーとして設定します。

[eventlistener:memmon]
command=memmon -a 200MB
events=TICK_60

上記の構成は、200MBのメモリ使用量を超えた場合に、スーパーバイザー制御下のプログラムを再起動するようにmemmonを設定します。60秒ごとにチェックします。

特定のプログラムまたはプログラムグループを監視するようにmemmonを構成し、それぞれに制限を設定できます。

于 2012-09-24T19:39:47.977 に答える
13

簡単なスーパーバイザーのみのソリューションがあります。適切な時間スリープしてから、必要なプロセスを再開する別のスーパーバイザープロセスを作成します。

[program:my_program]
process_name = python something.py

[program:periodicrestarter]
command = sh -c "echo 'restart my_program' | supervisorctl;sleep 600"
; restarts all (sleeps first because this restarts itself):
;command = sh -c "sleep 600; echo 'restart all' | supervisorctl"
autorestart = true
于 2019-02-20T21:28:58.427 に答える