Linux で作成されたスレッドの数で上位 10 のプロセスを並べ替える

Linux で作成されたスレッドの数で上位 10 のプロセスを並べ替える

私は Linux/Debian サーバーを稼働させています: postgresql、tomcat。時々、ssh でサーバーにアクセスできないことがあります。

サーバーとの ssh 接続を開くと、ログイン ID (root) とパスワードを入力できますが、パスワードを入力して Enter キーを押しても応答がありません。

'sysinfo' 関数により、サーバーがこの状況に直面したとき、約 1600 のプロセス (この値は sysinfo.procs から取得) があり、負荷平均はほぼ 300 であることがわかりました (通常の場合、負荷平均は 0 から 1 の間です)。

私がやろうとしているのは、作成されるスレッドの数によって上位 5 つのプロセスをリストすることです。しかし、簡単な方法が見つかりません。私が見つけた方法はいくつかあります。

  1. の NLWP 値をログに記録してps -efL、どのプロセスが異常に多くのスレッドを作成しているかを確認します。
  2. 負荷平均がどんどん大きくなると、すべての/procs/*/statusファイルをログ ディレクトリにコピーし、後でどのプロセスが 'Threads' の値が最大であるかを知ることができます。

他に何か提案があれば教えてください。このLinuxサーバーはサービスに失敗するはずがないので、気が狂いそうです。

答え1

これを試して:

$ ps axo nlwp,pid,cmd | sort -rn | head -10

ps ax  - see every process
    o  - format
         nlwp: number of lightweight processes (threads) in the process

関連情報