서버의 모든 서비스가 다운되어 여전히 핑에 응답하는 원인은 무엇입니까? 그리고 알아내는 방법


9

http, ssh, ftp, dns, smtp를 의미하는 서버가 완전히 다운 된 것은 며칠 안에 이미 두 번 발생했습니다. 기본적으로 모든 서비스는 서버가 꺼져있는 것처럼 응답하지 않습니다. , 그것이 저를 가장 화나게하는 것입니다.

작은 그룹의 사용자가 사용하는 짧은 버스트로 서버에 큰 부하 (CPU 및 메모리)를 유발하는 일부 PHP 스크립트가 있지만 일반적으로 서버는 이러한 버스트에 완벽하게 잘 생존합니다. 사용량의 최고치와 절대 일치하지 않습니다 (관련 될 수는 없지만 그 직후에는 발생하지 않습니다).

나는 이러한 충돌의 궁극적 인 원인을 마술처럼 말해 줄 것을 요구하지 않습니다. 제 질문은 : 죽음으로 인해 모든 서비스가 동시에 중단 될 수있는 단일 프로세스가 있습니까? 재미있는 것은 핑을 제외한 모든 네트워크 서비스가 다운된다는 것입니다. 서버가 일부 프로세스에서 CPU를 100 % 사용했다면 핑에도 응답하지 않습니다. (예를 들어) 깨진 PHP 스크립트로 인해 아파치가 추락하면 ssh 및 dns가 아닌 http에만 영향을 미칩니다.

내 OS는 Cent OS 5.6입니다

가장 중요한 것은 서버를 하드 재부팅 한 후에는 어떤 시스템 로그를보아야합니까? / var / log / messages는 의심스러운 것을 공개하지 않습니다.

답변:


8

( tl; dr이 여전히 핑에 응답하는 것은 예상되는 동작입니다. 메모리 사용량을 확인하십시오)

ICMP 에코 요청 (예 : ping)은 다른 종속성없이 커널 내부 네트워킹 스택에서 처리됩니다.

커널은 "메모리 상주 (memory resident)"로 알려져 있습니다. 즉, 항상 RAM에 보관되며 일반 응용 프로그램처럼 디스크로 교체 할 수 없습니다.

즉, 실제 메모리 부족 응용 프로그램이 디스크로 스왑되지만 커널은 원래 위치에 남아 있습니다. 실제 메모리와 스왑 메모리가 가득 차면 (시스템이 더 이상 프로그램을 관리 할 수없는 경우) 머신이 넘어집니다. 그러나 a) 커널은 여전히 ​​메모리에 있고 b) 다른 도움없이 핑 요청에 응답 할 수 있기 때문에 시스템은 모든 것이 죽어도 핑에 계속 응답합니다.

귀하의 문제와 관련하여 메모리 문제가 의심됩니다. "sysstat"를 설치하고 "sar"명령을 사용하여 메모리 / cpu / load / io로드 등의 로그를보십시오. 충돌시 100 % 물리적 및 스왑이 모두 사용되는 것으로 예상됩니다.

또한 OOM-killer (메모리 부족 킬러)의 표시가 있는지 dmesg 또는 / var / log / messages 를 검토하는 것이 좋습니다. 이것은 커널의 비상 시스템으로 메모리가 고갈 된 경우 프로세스 종료를 시작합니다. 효율성은 크게 어떤 프로세스가 종료되는지에 달려 있습니다. 메모리를 차지하는 단일 프로세스는 효율적으로 종료되고 메모리가 해제되지만 아파치 기반 웹 사이트는 하위 프로세스가 종료되는 즉시 교체 프로세스를 생성합니다.


OOM Killer +1
HTTP500

감사합니다. RAM과 스왑이 모두 서버 장애 이전에 가득 찼기 때문에 이것이 문제라고 확신합니다. (ovh의 관리자 통계에서 볼 수 있습니다). 그리고 아마도 많은 메모리를 사용하는 미친 PHP 스크립트 중 하나 일 것입니다. 그러나 몇 가지 이유로 나를 당혹스럽게합니다. (1) php가 먹은 메모리가 나중에 해제되지는 않지만 이해가되지 않는 것처럼 보입니다. 하나 (또는 심지어 몇)가 너무 많은 메모리를 사용하여 프로세스의 ... 나는 그것을 기대해서 (2) 어떤 경우에, 나는 적절한 운영 체제가 완전히 죽을 기대하지 않을 것이다
마테오

시스템이 제대로 작동하기에 충분한 램이 없을 때이를 요구하는 프로그램에 메모리 할당을 거부하십시오. 버그가 있거나 악의적 인 프로그램도 전체 시스템을 파괴 할 수 없어야합니다.
matteo

3
@matteo Linux는 "overcommit"이라고 부릅니다. malloc()1GB의 램이 실제로 사용한다는 의미는 아니기 때문에 메모리 관리자는 프로그램의 메모리 용량과 메모리 용량을 추적합니다. 프로그램은 실제로 사용되었으며 실제로 대부분 잘 작동합니다. 적어도 하나 이상의 프로그램이 실제로 생각하는 1GB를 모두 사용하기를 원할 때까지.
DerfK

1
@ matteo 나는 이것이 OOM 문제 라는 것을 알 수 없습니다 . 일반적으로 OOM-killer는 특정 기준에 맞는 특정 또는 프로세스를 선택하지만 항상 ssh와 같은 데몬을 종료하지는 않습니다. 이것은 분명히 I / O 측면에 있습니다. 내 답변에서 요청 한대로 하드웨어 상황 / 사양을 설명하지 않았습니다.
ewwhite

5

일반적으로 I / O 또는 디스크 하위 시스템 문제입니다. 종종 이것은 매우 높은 시스템로드 평균과 결합 될 것입니다. 예를 들어, 아래 그래프에 자세히 설명 된 시스템은 스크립트가 잘못 실행되어 많은 파일을 잠그고 4CPU 시스템에서로드가 36 ...으로 상승했을 때 응답하지 않습니다 (아직 핑 가능하지 않음).

여기에 이미지 설명을 입력하십시오

RAM에서 실행 중이고 디스크 액세스가 필요하지 않은 서비스는 계속 실행됩니다 ... 따라서 네트워크 스택 (ping)은 작동하지만 디스크 액세스가 필요할 때 다른 서비스는 정지됩니다. 키가 참조되거나 SSH 인 경우 SSH 비밀번호 조회가 필요합니다. 로드 평균이 30 정도에 도달하면 SMTP가 종료되는 경향이 있습니다

시스템이이 상태에 있으면 nmap서버의 IP에 대해 원격으로 시도하여 작동 상태 를 확인하십시오.

디스크 또는 스토리지 문제인 경우 로깅이 작동하지 않을 수 있습니다.

하드웨어 설정을 설명 할 수 있습니까? 이것은 가상 머신입니까? 스토리지 레이아웃은 무엇입니까?

로깅 이외에도 시스템 성능을 그래프로 표시하고 이러한 상황이 언제 발생하는지 이해할 수 있습니다. 이것이 특정 활동과 관련이 있는지 확인하십시오.


이것이 문제라고 가정합니다. 암호를 메모리에 유지하도록 SSH에 지시하는 방법이 있습니까? 따라서 서버 가이 상태에 있더라도 적어도 ssh를 통해 로그인하여 일부 명령을 실행하여 볼 수 있습니다. 무슨 일이야?
matteo

1
I / O 인 경우 문제의 맨 아래로 이동해야합니다. 디스크 배열 시간 초과 또는 드라이버 상호 작용 인 경우 성능이 저하되거나 리소스 경합 문제가 발생하는 스크립트와 다릅니다.
ewwhite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.