
httpdは複数の子プロセスを生成しますが、この子プロセスがゾンビプロセス化してしまう
ことがあります。
このゾンビ化してしまう原因として考えられるものを教えて下さい。
『何らかの理由で子プロセスが停止せずに親プロセスが停止した』等、あいまいな答えでも
構いません。もちろん具体的であれば、とても助かりますが…。
思いつく限りいくつでも構いませんので、教えて下さい。
ちなみに、私が使用しているマシンで上記現象が発生している訳ではなく、一般的な事例として
子プロセスのゾンビ化の原因になり得る事象を知りたいと思っていますので、構成情報などは
あまり気にせずに答えて頂けると幸いです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ゾンビプロセス一般について書きます。
ゾンビプロセスとは、プロセスの実体は無いが、プロセステーブル(カーネルがプロセスを管理してる台帳)に
エントリーがある状態を指します。
名簿に名前があるけど、本人は居なくなっちゃってる、と。
あるプロセスが終了したときには、必ず一瞬でもこの状態になります。
通常は、プロセスが終了したというシグナルが親プロセスに通知され、親プロセスが後始末を
してあげて、めでたくゾンビ状態ではなくなるのです。
もし、親がシグナルを受けたときに適切な処理を行っていなければ、親プロセスが終了するか
システムが再起動するまで、ゾンビ状態のままです。
> このゾンビ化してしまう原因として考えられるものを教えて下さい。
子プロセスからのシグナルを受けたときの処理がまずい、のが原因です。
自力で調べた中にもシグナルについて触れてある資料はあったのですが、いま一つ頭の中で
整理しきれていなかったんです。
この回答を読んで、ようやくはっきりしました。ありがとうございました。
ところで、
> もし、親がシグナルを受けたときに適切な処理を行っていなければ、親プロセスが終了するか
> システムが再起動するまで、ゾンビ状態のままです。
とのことですが、親プロセスを終了させれば、ゾンビとなった子プロセスは必ず全て
終了されるものなのでしょうか?
もし宜しければ教えて下さい。
No.2
- 回答日時:
> とのことですが、親プロセスを終了させれば、ゾンビとなった子プロセスは必ず全て
> 終了されるものなのでしょうか?
私は、そのように理解していますが、これは確約されたことではなく、その unix の実装(と、障害)次第、となります。
また、setsid() を使ってプロセスグループを親と別にしてしまったプロセスが、もしも Zombie に
なった場合(まず、ならない、と思いますが)には、親プロセスの終了は意味が無い(と思う)。
私も、知識の整理をかねて Web をうろうろしていたら、Solaris9 には preap なるコマンドがあって、
お掃除をしてくれそう。
# 収穫、収穫 :-)
参考URL:http://docs.sun.com/db/doc/816-0210/6m6nb7mi1?l= …
確かに、仮にプロセスグループが異なっているとしたら、親プロセスの停止は子プロセスに
関係ありませんね。
具体的に事例を提示して頂き、とても判りやすかったです。
私の使用している Solaris8 では、残念ながら preap コマンドはまだ実装されていないようですが、
今後の参考にさせて頂きます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
タスクバーの音量アイコンをク...
-
System Idle Processってなに?...
-
プロセス、サービス、デーモン...
-
Powershell プロセス二重起動
-
ときどきCPU使用率が100%になっ...
-
CPU使用率が常に50~10...
-
CPU使用率取得方法について
-
CPU使用率25% の正体を...
-
Windowsで作れるスレッド最大数...
-
IE プロセスが消えない
-
デーモンモードとは何でしょうか?
-
プロセスがタスクマネージャー...
-
Telnetをログアウトしても処理...
-
NETSTATのコマンドプロンプト画...
-
16bitについて
-
プロセスの終了について教えて...
-
プロンプトが返らない
-
アプリケーションの最大メモリ...
-
シェルスクリプトでエラーが出ます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
プロンプトが返らない
-
タスクバーの音量アイコンをク...
-
System Idle Processってなに?...
-
プロセスがタスクマネージャー...
-
タスクマネージャに表示されな...
-
httpdの子プロセスがゾンビ化す...
-
タスクマネージャのCPU率がおか...
-
コマンドライン上でファイルを...
-
ps コマンドのステータス。S Ss...
-
Powershell プロセス二重起動
-
デーモンモードとは何でしょうか?
-
CPU使用率が常に50~10...
-
linuxでプロセスが動いているCP...
-
Windowsで作れるスレッド最大数...
-
UNIXのファイルタイプp(...
-
アクロバットを終了しても、プ...
-
プロセスがファイルを掴んだま...
-
イラストレータでの透明部分の...
おすすめ情報