
내 서버가 완전히 다운되는 일이 며칠 내에 이미 두 번이나 발생했습니다. 즉, http, ssh, ftp, dns, smtp를 의미합니다. 기본적으로 서버가 꺼진 것처럼 모든 서비스가 응답을 멈춥니다. 단, 여전히 ping에 응답하는 경우는 제외됩니다. , 이것이 나를 가장 당황하게 만드는 것입니다.
나는 소수의 사용자 그룹이 사용하는 짧은 순간에 서버에 막대한 로드(CPU 및 메모리)를 유발하는 일부 PHP 스크립트를 가지고 있지만 일반적으로 서버는 이러한 버스트에서 완벽하게 잘 "생존"합니다. 이러한 사용량 급증과 결코 일치하지 않습니다(관련이 없다고 말하는 것은 아니지만 그 직후에는 발생하지 않습니다).
이러한 충돌의 궁극적인 원인을 마법처럼 말해 줄 수 있도록 요청하는 것이 아닙니다. 제 질문은 이렇습니다. 사망으로 인해 이러한 모든 서비스가 동시에 중단될 수 있는 단일 프로세스가 있습니까? 재미있는 점은 ping을 제외한 모든 네트워크 서비스가 다운된다는 것입니다. 서버가 일부 프로세스에 의해 CPU의 100%를 차지한 경우 핑에도 응답하지 않습니다. 예를 들어, 깨진 PHP 스크립트로 인해 Apache가 충돌한 경우 이는 http에만 영향을 미치고 ssh 및 dns.... 등에는 영향을 미치지 않습니다.
내 OS는 Cent OS 5.6입니다.
가장 중요한 점은 서버를 하드 재부팅한 후 어떤 시스템 로그를 확인해야 합니까? /var/log/messages에는 의심스러운 내용이 표시되지 않습니다.
답변1
(tl;dr여전히 ping에 응답하는 것은 예상된 동작입니다. 메모리 사용량을 확인하세요.
ICMP 에코 요청(예: ping)은 다른 종속성 없이 커널 내 네트워킹 스택에 의해 처리됩니다.
커널은 "메모리 상주"라고 알려져 있습니다. 즉, 커널은 항상 RAM에 유지되며 일반 응용 프로그램처럼 디스크로 교체될 수 없습니다.
이는 물리적 메모리가 부족한 상황에서 애플리케이션이 디스크로 교체되지만 커널은 그대로 유지된다는 의미입니다. 물리적 메모리와 스왑 메모리가 모두 가득 차면(그리고 시스템이 더 이상 프로그램을 관리할 수 없게 되면) 머신이 다운됩니다. 그러나 왜냐하면ㅏ)커널은 여전히 메모리에 있고비)다른 어떤 것의 도움 없이도 ping 요청에 응답할 수 있으며, 시스템은 모든 것이 중단되었음에도 불구하고 ping에 계속 응답합니다.
귀하의 문제와 관련하여 메모리 문제가 의심됩니다. "sysstat"을 설치하고 "sar" 명령을 사용하여 메모리/cpu/load/io 로드 등의 로그를 확인합니다. 충돌 시 100% 물리적 및 스왑 사용이 모두 표시될 것으로 예상합니다.
나는 또한 보는 것을 고려할 것입니다dmesg또는/var/log/메시지OOM 킬러(메모리 부족 킬러)가 호출되는 징후가 있는지 확인하세요. 이는 메모리가 고갈될 경우 프로세스 종료를 시작하는 커널의 비상 시스템입니다. 그 효과는 주로 어떤 프로세스가 종료되는지에 따라 달라집니다. 메모리를 소모하는 단일 프로세스는 효율적으로 종료되고 메모리가 해제되지만, 아파치 기반 웹사이트에서는 하위 프로세스가 종료되는 즉시 대체 프로세스가 생성됩니다.
답변2
일반적으로 이는 I/O 또는 디스크 하위 시스템 문제입니다. 종종 이는 극도로 높은 시스템 로드 평균과 결합됩니다. 예를 들어, 아래 그래프에 설명된 시스템은 스크립트가 잘못 실행되고 여러 파일이 잠기고 로드가 4-CPU 시스템에서 36...으로 증가했을 때 응답하지 않게 되었습니다(아직 ping은 가능했습니다).
RAM에서 실행 중이고 디스크 액세스가 필요하지 않은 서비스는 계속 실행됩니다... 따라서 네트워크 스택(ping)은 작동하지만 디스크 액세스가 필요할 때 다른 서비스는 중단됩니다... 키가 참조될 때 SSH 또는 비밀번호 조회가 필요합니다. 로드 평균이 30 정도에 도달하면 SMTP가 종료되는 경향이 있습니다.
시스템이 이 상태이면 nmap
서버의 IP에 대해 원격을 시도하여 무슨 일이 일어나는지 확인하십시오.
디스크나 스토리지 문제인 경우 로깅이 작동하지 않을 수 있습니다.
하드웨어 설정을 설명해 주실 수 있나요? 이것은 가상 머신입니까? 스토리지 레이아웃은 무엇입니까?
로깅보다 시스템 성능을 그래프로 표시하고 이러한 일이 발생하는 시기를 이해할 수 있는지 확인하고 싶을 것입니다. 이것이 특정 활동과 연관되어 있는지 확인하세요.