依 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

相關內容