ApacheのPOD

以下、まさしく単なる備忘録。
自分でも整理できていないけど、忘れないように書き留めておくだけ〜

ApacheはPOD(pipe-of-death)を使って子プロセスを安全に終了できる。
PODの実装はMPM毎に実装してもよいし、mpm_common.cに含まれるものを使ってもよい。
preforkの場合はmpm_common.cを、workerの場合は自前でPODを実装(pod.c)している。

PODはFIFOを作って、親プロセスから子プロセスにメッセージを送る仕組み。
preforkでは、MaxSpareServersを超えた分の子プロセスを終了させる場合に使用。
workerでは、graceful restartの時にも使用している。
というか、preforkでgraceful restartしている時はFIFOは使ってなくて
、ap_mpm_pod_killpgは子プロセスにダミーの接続要求を投げるだけ。
(mpm_common.cの実装ではFIFOにメッセージは流さない)
親プロセスの世代番号をインクリメントする事で、子プロセスは親プロセスと
世代番号が違うことを認識して落ちる。

うーむ、もちと整理しよう・・・