linuxパフォーマンス-04大量の割り込みプロセスとゾンビプロセスが発生
文書ディレクトリ基礎知識 システムにおけるプロセス実行状態 ゾンビプロセス 中断不可能プロセスとゾンビプロセスの簡単な定義 問題解決構想 iowaitの増加に遭遇し、cpuが高すぎる場合の解決策 ゾンビプロセス問題解決 ps iO増加 について
基礎知識
システム内のプロセス実行ステータス
ゾンビプロセス通常、あるプロセスがサブプロセスを作成した後、彼は呼び出しシステムを通じてwait()またはwaitpid()を呼び出してサブプロセスの終了を待って、サブプロセスリソースを回収するはずです. サブプロセスが終了すると、sigchld信号が親プロセスに送信されるので、親プロセスはsigchld信号の処理関数を登録することもでき、非同期回収リソース 親プロセスがそうしなかったり、サブプロセスの実行が早すぎたりして、親プロセスがサブプロセスの状態を処理するのに間に合わなかったりした場合、サブプロセスはすでに早期に終了しています.このとき、サブプロセスはゾンビプロセス になります.
中断不可能プロセスとゾンビプロセスの簡単な定義は、通常、プロセスがハードウェアと対話していることを示し、プロセスデータがハードウェアと一致することを保護するために、システムは他のプロセスまたはプロセスの中断を許可しない. ゾンビプロセスは、プロセスが終了したことを示しますが、親プロセスはプロセスが占有するリソースを回収していません.
問題解決の考え方
iowaitが増加し続け、cpuが高すぎる場合の解決策1、dststatでiowaitの上昇を見つけたのは、 を読むか書くかのためです.2、topコマンドで状態D(中断不可)のプロセス番号 を見つける3、指定プロセスは彼のio状況を見る 4第3歩のデータはすべて正常で、それでは直接-pを除いてすべての を見ます5は、3番目のステップまたは4番目のステップによってiowaitをもたらすプロセスを決定し、strace-p pidでプロセスを追跡するか、perf topでプロセスを表示する呼び出しスタックで問題を発見する を開始することができる.
ゾンビプロセスの問題解決ゾンビプロセスのPidを見つけてpstreeで親プロセスを見つけて再び分析
ps iOの増加についてディスクI/Oはiowaitの上昇を招いたが、iowaitの高さはI/Oのパフォーマンスのボトルネックを表すとは限らない.システム内でI/Oタイプのプロセスのみが実行されている場合、iowaitも高くなりますが、実際にはディスクの読み書きがパフォーマンスのボトルネックに達していません. このような問題が発生した場合、dtstatとpidstatでディスクの問題かどうかを確認してから、関連プロセスにフォローして をさらに決定することができます.
基礎知識
システム内のプロセス実行ステータス
R Running Runnable , CPU , 。
D Disk Sleep , (Uninterruptible Sleep), , 。
Z Zombie , “ ” , 。 , , ( 、PID )。
S Interruptible Sleep , , 。 , R 。
I Idle , , 。 , D , , , Idle 。 ,D , I 。
T/t stopped traced ,
x dead , , top ps
ゾンビプロセス
中断不可能プロセスとゾンビプロセスの簡単な定義
問題解決の考え方
iowaitが増加し続け、cpuが高すぎる場合の解決策
# -d I/O ,-p , 1 3
$ pidstat -d -p 4344 1 3
06:38:50 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
06:38:51 0 4344 0.00 0.00 0.00 0 app
06:38:52 0 4344 0.00 0.00 0.00 0 app
06:38:53 0 4344 0.00 0.00 0.00 0 app
ゾンビプロセスの問題解決
# -a
# p PID
# s
$ pstree -aps 3084
systemd,1
└─dockerd,15006 -H fd://
└─docker-containe,15024 --config /var/run/docker/containerd/containerd.toml
└─docker-containe,3991 -namespace moby -workdir...
└─app,4009
└─(app,3084)
ps iOの増加について