
私は Linux/Debian サーバーを稼働させています: postgresql、tomcat。時々、ssh でサーバーにアクセスできないことがあります。
サーバーとの ssh 接続を開くと、ログイン ID (root) とパスワードを入力できますが、パスワードを入力して Enter キーを押しても応答がありません。
'sysinfo' 関数により、サーバーがこの状況に直面したとき、約 1600 のプロセス (この値は sysinfo.procs から取得) があり、負荷平均はほぼ 300 であることがわかりました (通常の場合、負荷平均は 0 から 1 の間です)。
私がやろうとしているのは、作成されるスレッドの数によって上位 5 つのプロセスをリストすることです。しかし、簡単な方法が見つかりません。私が見つけた方法はいくつかあります。
- の NLWP 値をログに記録して
ps -efL
、どのプロセスが異常に多くのスレッドを作成しているかを確認します。 - 負荷平均がどんどん大きくなると、すべての
/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