• 締切済み

回線飽和とゾンビプロセスの関係

ネットワーク回線が貧弱で、何かの拍子に回線が飽和している場合、 その間、サーバーでゾンビプロセスが増加するような気がするのですが、 実際に関連性はあるでしょうか?飽和状態が解消するとゾンビの異常発生も収まります。 生まれたゾンビはすぐ消えるのですが、回線飽和していると思われる間、 通常より次々と数多くゾンビが生まれて常時かなりの数があります。

みんなの回答

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.2

> 何かの拍子に回線が飽和している場合、 > その間、サーバーでゾンビプロセスが増加するような気がするのですが、 > 実際に関連性はあるでしょうか? > 飽和状態が解消するとゾンビの異常発生も収まります。 こうした状態の場合は、単にI/O(今回の場合回線上の応答)の待ち行列に登録して、完了待ち合わせをしている状態だけだと思われます。 待ち行列に登録(Enqueue)、完了したら取り出す(Dequeue)、といった待ち行列(Queue)事象だと思います。 一般には、コンピュータの処理においては、CPUのスピーとは早く、I/Oのスピーとは遅いことはご存知だと思います。 そこで、CPUは、I/Oの要求を出して、その完了を待ち合わせしないと順番に読み書きを保証して処理しないとおかしくなるのはご存知だと思います。 このI/Oの完了待ち合わせをしているとき、我々の目に見える状態では、一時的にゾンビプロセスとして見えるということでしょう。 ゾンビとは、I/Oを出した形跡が辿れなくて、所有者不明の落し物と言った表現で、死んだ事象を一般には呼ぶと思いますけど。 Linuxの場合、ゾンビプロセスとして表示される場合が多いことは有名ですけど、本当は単に、所有者を見つけて表示させるのが面倒だけだったりします。 アプリケーションが異常終了して、ファイル等のクローズ処理もできないまま終ったときの取り残されたプロセスのことをゾンビファイルとか、ゾンビプロセスと呼ぶと思います。 キューイング理論もいろいろあって、FIFO(First In First Out:先入れ先出し)とか、LIFO(Last In First Out:後入れ先出し)とかあります。 コンピュータを学ぶ上では、キューイング理論は必ず出てきます。

回答No.1

私の理解だと、ゾンビプロセスというのは、親プロセスのwaitが完了していない子プロセスのことのはずです。だとすると、質問のケースの場合、たとえばあるプロセスが子プロセスをforkして、waitするまでの間にネットワーク絡みの処理をしている場合、psをたたいたときにその子プロセスがゾンビとして見えると思います。 バンド幅の飽和はあくまでひとつの例で、一般にCPU、メモリ、diskなどのリソースがbusyになると、ゾンビプロセスは増えると思います。リソースが解放されれば無くなるはずです。もし長い間残っているのなら、それは親プロセスのプログラムの実装に問題があると言えるでしょう。

関連するQ&A