按每个在 Linux 中创建的线程数对前 10 个进程进行排序

Won*_*Lee 4 linux debian process

我有一台 Linux/Debian 服务器正在运行:postgresql、tomcat。有时,我无法通过 ssh 访问服务器。

当我打开与我的服务器的 ssh 连接时,我可以输入我的登录 ID(root)和密码,但是当我输入我的密码并按 Enter 时,没有任何响应。

通过'sysinfo'函数,我发现当服务器面临这种情况时,大约有1600个进程(这个值来自sysinfo.procs),平均负载接近300(通常情况下,平均负载在0到1之间)

我想要的是,按它创建的线程数列出前 5 个进程。但是我找不到简单的方法。我找到了一些方法。

  1. 记录 NLWP 值ps -efL,这样我就可以知道哪个进程异常创建了太多线程。
  2. 当平均负载越来越大时,将所有/procs/*/status文件复制到日志目录,稍后我可以知道哪个进程具有最大的“线程”值。

如果有任何其他建议,请告诉我。它让我发疯,因为这台 Linux 服务器不应该让服务失败

Wik*_*itz 7

尝试这个:

$ 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
Run Code Online (Sandbox Code Playgroud)