리소스를 과도하게 사용하면 실제로 사용자가 SSH를 통해 Linux에 연결하는 것을 방해합니까?

리소스를 과도하게 사용하면 실제로 사용자가 SSH를 통해 Linux에 연결하는 것을 방해합니까?

내가 일하는 야간 지원 담당자는 SSH를 통해 로그인할 수 없다는 이유로 컴퓨터를 재부팅하고 처음에 무슨 일이 일어나고 있는지 파악하는 경향이 있습니다. 이렇게 하는 것은 회사 정책에 매우 위배됩니다(장치의 코드를 담당하는 사람으로서 적어도 내 정책에 위배됩니다).

하지만 정책이나 정치를 떠나서 리소스의 과잉 활용으로 인해 SSH 연결이 전혀 불가능할 정도로 시스템이 완전히 마비되는 상황은 실제로 한 번도 없었습니다. 그렇죠? 내 경험상 매우 느린 터미널을 얻게 되지만 ssh는 2분마다 한두 번의 주기를 얻게 되며 문제가 되는 프로세스를 종료하고 아마도 스택 덤프를 얻을 수 있습니다.

머신을 재부팅하는 것은 임시방편일 수도 있지만 "만약 우리가 그것을 죽이면 우리는 아무것도 배울 수 없을 것"이라고 생각합니다. 따라서 누군가 재부팅이 답이 아니라는 것을 증명할 수 있는 탄약과 거의 종료된 시스템에 SSH로 접속하여 과로한 야간 근무자를 위한 문제 해결 지침을 제공할 수 있다면 도움을 받을 수 있습니다.

답변1

서버의 CPU가 완전히 소모되면 요청을 처리할 주기가 없습니다 ssh.

메모리를 완전히 소모하면 fork새로운 sshd 프로세스를 생성할 수 없습니다.

리소스 과잉 사용으로 인해 ssh가 작동하지 않는 경우가 많습니다.

즉, 근본 원인을 파악하지 않고 반복적으로 강압적인 재시작에 의존하는 것은 현명하지 못하고 근시안적인 것 같습니다.

답변2

정말 댓글이 너무 길어졌습니다.

귀하의 질문에 대한 짧은 대답은 다음과 같습니다.

예. 리소스를 과도하게 사용하면 서버의 모든 기능이 파괴될 수 있습니다. 모든 프로세스에는 메모리가 필요합니다. 기억이 고갈되는 슬픈 순간.

긴 대답

시스템이 다운되었을 때 시스템을 복구할 수 없다면 근본 원인을 찾는 것이 훨씬 더 어렵습니다.

다음에 기계가 고장나면 저장해 두십시오. 이미 알고 있는 일을 즉시 중단하도록 하세요. 진단 명령을 실행하는 데 귀중한 시간을 낭비하지 마십시오. 당신이 알고 있는 일을 멈추게 만드는 것부터 시작하세요. 모든 apache/nginx/lighthttpd 프로세스를 즉시 종료하는 웹 서버입니다. 이메일을 실행 중인 경우 모든 이메일 프로세스를 즉시 종료합니다. 데이터베이스 서버인 경우 데이터베이스 프로세스를 직접 종료하지 말고 즉시 중지 명령을 실행하십시오(모든 데이터베이스 요청이 웹 사이트나 일부 애플리케이션에서 오는 경우 해당 애플리케이션을 제공하는 웹 서버나 서비스를 종료하기만 하면 됩니다).

서버가 맹목적으로 모든 요청에 ​​응답하려고 시도하다가 메모리 부족으로 죽는 것을 방지하려면 서버에 점점 더 많은 프로세스를 제공하는 모든 것을 꺼야 합니다.

어느 정도 제어가 가능하고 진단을 통해 아무것도 찾을 수 없다고 가정하면 유일한 희망은 로그입니다. 웹/이메일/데이터베이스 서버인 경우 특정 시간 범위 내에 요청을 보내는 IP 수와 같은 정보에 대한 로그를 확인하고 서버가 다운된 횟수와 서버가 가동되어 실행된 횟수를 비교하세요. 리소스 문제 이전과 도중에 이루어진 웹 또는 이메일 요청 유형을 조사합니다. 디스크에 기록되는 데이터베이스 쿼리 수를 확인하세요. 디스크 I/O 문제로 인해 서버가 쉽게 중단될 수 있습니다. 장시간 실행/디스크 쓰기 데이터베이스 쿼리 및/또는 악의적인 이메일/네트워크 사용자와 관련된 문제를 발견할 수 있습니다.

또한 서비스가 중단되고 단서를 찾고 있으면 프로세스 목록에서 시스템 사용자로 실행하면 안 되는 기존 프로세스가 있는지 확인하세요. 예를 들어, 아파치를 종료하고 "nobody"로 실행 중이라면 "nobody"로 실행되는 다른 스크립트가 있는지 확인하세요. 때때로 이런 방식으로 tmp에 업로드된 악성 쉘과 항목을 찾을 수 있습니다.

많은 메모리를 차지하는 항목을 찾으려면 top을 사용하고, 프로세스가 확실하지 않으면 조사해 보세요. lsof 및 기타 시스템 도구와 같은 명령을 사용하여 프로세스가 실행 중인 디렉터리와 불법 프로세스에 대한 단서를 제공할 수 있는 정보를 확인합니다.

아마 이런 것을 발견하게 될 것입니다. 로깅이 좋지 않아 그렇게 할 수 없다면 최소한 로깅을 활성화/활성화하면 다시 발생하더라도 더 많은 데이터를 얻을 수 있습니다. 파일 서버(ftp, scp 등)인 경우 로깅을 활성화하면 파일이 업로드/다운로드되는 시기를 확인할 수 있습니다. 네트워크상의 사람들이 동시에 많은 업로드/다운로드를 수행하고 있습니까?

이는 빙산의 일각에 불과합니다. 할 수 있는 일이 많습니다. 하지만 이를 조사라고 생각하면 작업에 필요한 단서가 필요합니다.

관련 정보