最近、私のサーバーで高い負荷の問題が発生しました。約30分間見たtop
結果、Nagiosが多くの短期プロセスをフォークしたことがわかりました。 Nagiosを弾いた後、すべてが正常に戻った。
私の質問は、どのルートプロセスがこれらのブランチをたくさん生成するのかをより迅速に見つけることができるということです。
ありがとうございます。
ベストアンサー1
サポートされているオペレーティングシステムを実行している場合、dtrace
このスクリプトは短期プロセスを開始するプロセスを識別するのに役立ちます。
#!/usr/sbin/dtrace -qs
proc:::exec
{
self->parent=stringof((unsigned char*)curpsinfo->pr_psargs);
}
proc:::exec-success
/self->parent != NULL/
{
printf("%s -> %s\n",self->parent,curpsinfo->pr_psargs);
self->parent=NULL;
}
サポートされていないオペレーティングシステムを使用している場合は、次dtrace
の選択肢を見つけてください。systemtap
またはsysdig
Linuxでは、ProbeView
AIXで。
sysdig
以下は、すべてのコマンドの開始時刻と終了時刻とそのpid
合計を表示するスクリプトですppid
。
sysdig -p"*%evt.time %proc.pid %proc.ppid %evt.dir %proc.exeline" \
"( evt.dir=< and evt.type=execve ) or evt.type=procexit"
別の方法は、オペレーティングシステム(利用可能な場合は通常acct
Linuxのパッケージ)を使用してプロセスアカウントを有効にし、結果ログを表示することです。top
プロセス会計を活用する同様のプログラムもあります。上。