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

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

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

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

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

我试图按其创建的线程数列出前 5 个进程。但是我找不到简单的方法。我找到了一些方法。

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

如果还有其他建议,请告诉我。这让我很抓狂,因为这个 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

相关内容