web-dev-qa-db-ja.com

100%CPUを使用したゾンビプロセス

リソース(RAMおよびCPU)を使用してはならないゾンビプロセスは、コア全体を占有しています8コア64ビットUbuntu11.10デスクトップインストール。

これはps -el|grep Zの出力です。

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 Z  1000 10317     1 99  80   0 -     0 exit   ?        19:27:15 Java <defunct>

...そして、ここにtopからの抜粋があります:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                
10317 deltik    20   0     0    0    0 Z  100  0.0   1170:17 Java <defunct>
 1424 root      20   0  612m 193m 158m S   14  2.4 287:17.11 Xorg
12580 deltik    20   0  710m 135m  46m S    5  1.7  27:31.07 compiz

これが、ゾンビプロセスが実現した方法です。

  1. Java JARと呼ばれる minecraft.jar を開きました。このランチャーは別のJARファイルを〜/ .minecraft/bin/minecraft.jarにダウンロードします
  2. コンピューターをxscreensaverでロックしたときに、そのJARが実行されていました。
  3. 次に、パスワードを入力してコンピューターのロックを解除すると、Minecraftウィンドウがフリーズしていることがわかりました。
  4. gnome-system-monitorを使用して強制終了しようとしました(PID 10317)。ゾンビになりました。
  5. kill -9 10317は効果がありませんでした。
  6. xkillは「Minecraft」というタイトルのウィンドウのみを閉じました。基になるJavaプロセスを閉じませんでした。

関連情報:

  • グラフィックスドライバーはFGLRXであり、 nity of buntu 11.04 および buntu 11.1XorgおよびcompizのCPU使用率が高い場合があります。

私は知りたいです:

  1. Javaのこのプロセスを再起動せずに破棄するには、どのような方法がありますか?
  2. なぜこの問題が発生しているのですか?
  3. この問題が再発しないようにするにはどうすればよいですか?
13
Deltik

プロセスはすでにinitに親が変更されているため、刈り取る必要があります(そうでない場合、解決策は親を強制終了することです)。 exitフィールドに基づいて、WCHANでスタックしているようです。

実際には、コアダンプの作成などの処理を行って終了し、自然に消えてしまう可能性があります。残念ながら、ドライバが壊れているためにカーネルで回転している可能性があり、最終的には再起動するしかありません。

8
David Schwartz

やってみました Sudo kill -SIGCHLD 1?これが機能しない場合は、システムを再起動する必要があります。

詳細: https://stackoverflow.com/questions/6335730/zombie-process-cant-be-killed および https://serverfault.com/questions/89759/init -never-reaping-zombie-defunct-processes

5
bwDraco

ゾンビプロセスは終了しましたが、まだクリーンアップされていません(刈り取られたのが正しい用語です)。したがって、killは通常のプロセスのように機能しません。プロセスはまだプロセステーブルにありますが、ゾンビの場合、リソースは割り当て解除されています。

SIGCHLDシグナルをプロセスの親に送信してみることができます。そうしないと、initがそれを取得して、最終的にそれを取得するはずです。プロセスをスピードアップしたい場合は、単に再起動するだけです。

4
Garrett

これはカーネルのバグです。 ecryptfsを使用してホームディレクトリを暗号化していますか? launchpad.netにバグの報告があります。

1
psusi