もっと分岐したプロセスを見つける方法は?

もっと分岐したプロセスを見つける方法は?

最近、私のサーバーで高い負荷の問題が発生しました。約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またはsysdigLinuxでは、ProbeViewAIXで。

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"

別の方法は、オペレーティングシステム(利用可能な場合は通常acctLinuxのパッケージ)を使用してプロセスアカウントを有効にし、結果ログを表示することです。topプロセス会計を活用する同様のプログラムもあります。

おすすめ記事