ゾンビプロセスとは?帰れない社員に例えて原因と対処法をやさしく解説

システム開発・テクノロジー
ゾンビプロセスとは?ざっくりと3行で
  • 処理自体は完了しているのに、親プログラムへ「終わりました」という報告ができず、システム上に名前だけ残ってしまった状態のことだよ!
  • 仕事は終わっているからメモリやCPUは消費しないけど、管理名簿(プロセステーブル)の枠を埋め続けてしまうんだ。
  • 現場でこれが増えすぎると、新しいプログラムを起動するための空き番号(プロセスID)が枯渇してサーバーが動かなくなる恐れがあるよ。
デプロイ太郎が、終了しても管理情報だけが残る「ゾンビプロセス」の仕組みと、親プロセスによる回収(wait)での解決方法を解説する4コマ漫画。
①終了したはずの処理がプロセス一覧に残り続けている異常にデプロイ太郎が気づく。 ②実体は死んでいるのに管理番号(PID)だけが亡霊のように残る状態だと判明。 ③放置するとリソース枯渇の危機。親プロセスへ回収処理(wait)を強く求める。 ④親プロセスが適切に看取り(wait)、ゾンビは成仏してシステムは正常化する。

【深掘り】これだけ知ってればOK!

「暴走してシステムを破壊するウイルス」だと思われがちだけど、実は「既に死んでいる(停止している)」ので無害に近いという側面があるんだよ。

ゾンビプロセスは、文字通り「死体」のようなものです。既に計算処理は終えているため、CPUを使ったりメモリを大量に消費したりすることはありません。しかし、OSが管理する「現在動いているプログラムのリスト」には名前が残ったままです。

通常、プログラム(子)が終了すると、それを起動したプログラム(親)が「終了確認(wait処理)」を行って初めてリストから消えます。この親による「お見送り(後始末)」がサボられている状態がゾンビプロセスです。既に死んでいるため、強制終了コマンド(kill)を送っても、死体を殺すことはできず消滅しません。

サーバーの動作が不安定な時、topコマンドなどでステータスが「Z」になっているプロセスを見つけたら要注意です。ゾンビ自体はkillできないため、大元の「親プロセス」を特定して再起動またはkillすることで、連鎖的にゾンビを一掃できます。

会話での使われ方

サーバーのプロセスIDが枯渇しかけてると思ったら、大量のゾンビプロセスが滞留していました

このバッチ処理、終了処理の記述が漏れてるから、実行するたびにゾンビを生み出しちゃうよ

ゾンビ化してるプロセスがあるけどkillが効かないから、親プロセスの方を再起動しておいて

【まとめ】3つのポイント

  • 報告待ちの帰れない社員:仕事は終わったのに、上司(親)が報告を聞いてくれないからタイムカードを切れない状態
  • 管理台帳の無駄遣い:給料(CPU/メモリ)は発生しないが、社員名簿の行(プロセスID)だけを占有している
  • 親の責任:解消するには、本人ではなく管理している親プログラムに対処してもらう必要がある

よくある質問

Q
ゾンビプロセスはいつ使うのがベストですか?
A
意図して使うものではなく、プログラムの不具合(バグ)によって発生してしまうエラー状態です。見つけ次第、解消する必要があります。
Q
ゾンビプロセスを失敗させない(発生させない)コツはありますか?
A
プログラムを開発する際に、子プロセスを生成したら必ず親プロセス側で`wait`関数などを呼び出し、終了ステータスを受け取る処理を実装することです。
Q
ゾンビプロセスの具体例は何ですか?
A
LinuxなどのUNIX系OSでpsコマンドやtopコマンドを実行した際、ステータス欄に「Z」や「defunct」と表示されているプロセスがそれにあたります。
Q
ゾンビプロセスと孤児プロセスとの違いは何ですか?
A
ゾンビは「親が終了確認をしてくれない子」ですが、孤児プロセスは「親が先に死んでしまい、身寄りがなくなった子(実行中)」を指します。孤児プロセスは通常、initプロセス(システムの親)が養子として引き取り、正常に終了させてくれます。

コメント

  1. ゾンビプロセスを知れて助かりました。

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
YouTubeも運営中。チャンネル登録はこちら!!
応援のワンクリックが大きな励みになります!
IT・通信業ランキング にほんブログ村 ベンチャーブログへ
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました