我有一个 Linux/Debian 服务器正在运行:postgresql、tomcat。有时,我无法通过 ssh 访问服务器。
当我打开与服务器的 ssh 连接时,我可以输入我的登录 ID(root)和密码,但是当我输入密码并按回车键时,没有任何反应。
通过 'sysinfo' 函数,我发现当服务器遇到这种情况时,大约有 1600 个进程(该值来自 sysinfo.procs),平均负载几乎为 300(通常情况下,平均负载在 0 到 1 之间)
我试图按其创建的线程数列出前 5 个进程。但是我找不到简单的方法。我找到了一些方法。
- 记录 的NLWP值
ps -efL
,这样我就能知道哪个进程异常创建了太多线程。 - 当平均负载越来越大时,将所有
/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