
나는 Linux/Debian 서버를 실행하고 있습니다: postgresql, tomcat. 가끔 ssh로 서버에 접속이 안되는 경우가 있습니다.
서버에서 SSH 연결을 열면 로그인 ID(루트)와 비밀번호를 입력할 수 있지만 비밀번호를 입력하고 Enter 키를 누르면 아무런 응답이 없습니다.
'sysinfo' 함수를 통해 서버가 이러한 상황에 직면했을 때 약 1600개의 프로세스(이 값은 sysinfo.procs에서 가져옴)가 있고 로드 평균은 거의 300(일반적인 경우 로드 평균은 0에서 1 사이)이라는 것을 발견했습니다.
내가 하려는 것은 생성된 스레드 수에 따라 TOP 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