web-dev-qa-db-ja.com

kill pidが機能していませんか?

これは今かなり奇妙です。 pidを使用してプロセスを強制終了しようとしていますが、まったく機能しません。

root@machineA:/home/david# ps aux | grep modelling
david  5075  0.0  0.0 1285420 29404 ?       Dl   21:05   0:01 /opt/modelling/bin/http
root   8730  0.0  0.0   8096   936 pts/4    S+   22:43   0:00 grep --color=auto modelling

以下は私がプロセスを歪めている方法です。

root@machineA:/home/david# kill -9 5075

そして、もう一度psを実行するとします。再び同じ結果を見ることができます。

root@machineA:/home/david# ps aux | grep modelling
david  5075  0.0  0.0 1285420 29404 ?       Dl   21:05   0:01 /opt/modelling/bin/http
root   9062  0.0  0.0   8100   936 pts/4    S+   22:44   0:00 grep --color=auto modelling   

誰かが何が起こっているのか知っていますか?これは以前は問題なく動作していましたが、数時間前に発生し始めましたが、何が問題なのかわかりませんか?

更新:-

私はトップをしました、そしてそれはDではなくZとして表示されていますuninterruptible sleep

5075 david  20   0 1255m  28m  13m D    0  0.0   0:01.09 http
2
arsenal

D Stateプロセスを削除するには、プロセスが中断されないため、システムによって自動的に処理されない場合、マシンの再起動のみが問題を解決できます。 。

通常、プロセスが長い間D Stateにとどまる可能性はほとんどありません。そして、それが発生した場合、システムで適切に処理されていないものがあります。これもバグの可能性があります。

以下は、プロセスのD StateについてのOpenVZからの抜粋です。

D状態が発生すると、プロセスは割り込み不可能なスリープ状態になります。 D状態のプロセスでは何もできないので、この状態は不良です。幸いなことに、プロセスは通常、それほど長くはそのような状態にありません。しかし、D状態のプロセスのヒープがある場合、システムの一部のロジックが中断されます。それが起こっている場合、非常に重要なことは、この不運な睡眠がどこで発生するかを判別することです。 lオプションを指定したpsコマンドで簡単に実行できます。 WCHAN列は、プロセスがスリープしているカーネル関数の名前を示しています。

# ps axl | awk '$10 ~ /D/'
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
vass     13478  7.2  0.0   1732   624 pts/1    D+   17:36   0:00 find ./

[参考]- https://openvz.org/Processes_in_D_state

2
Suraj Biyani