최근 우리 회사의 메인 서버에 다운타임이 많이 발생하고 있습니다. 저나 다른 관리자가 알 수 없는 이유로 메모리가 무작위로(그리고 매우 갑작스럽게) 폭발합니다. 모든 메모리를 사용하기 때문에 응답하지 않게 되고 다시 시작해야 합니다. 매우 짜증나. 이것은 Debian 시스템입니다. Squeeze나 다른 것으로 업그레이드하지 않았으며 오랫동안 완벽하게 안정적이었습니다.
문제는 로그가 전혀 쓸모가 없다는 것입니다. 그들은 아무것도 잘못되었다는 것을 나타내지 않는 것 같았습니다. 일부 프로세스에 버그가 있어 메모리를 모두 차지하고 있는 것 같지만 현재로서는 이를 증명할 수 없습니다. 원격 로깅은 아무 것도 불평하지 않기 때문에 도움이 되지 않습니다. 모든 것이 괜찮다고 생각합니다.
그래서 제 질문은 이렇습니다. 이 문제를 어떻게 해결하시겠습니까? 어떤 통찰력이라도 감사하겠습니다. 감사해요.
답변1
위에리소스 사용량을 모니터링하고 기록하는 데 매우 능숙합니다. 대화형으로 또는 서비스로 사용할 수 있습니다.데비안 패키지10분마다 /var/log/atop.log에 기록하도록 설정하십시오(더 정확한 정보를 보려면 /etc/init.d/atop을 편집하십시오). 그런 다음 atop -r /var/log/atop.log -b hh:mm -mM
;를 사용하여 로그를 재생할 수 있습니다 . mM은 메모리 문제에 적합한 보기 및 정렬을 선택합니다. hh:mm은 이벤트가 발생하기 몇 분 전이어야 하며 tT를 사용하여 탐색합니다. 카테고리 A를 시도해 볼 수도 있습니다.
답변2
/etc/security/limits.conf(pam_limits)를 통해 프로세스당 주소 공간(as)과 사용자당 프로세스 수(nproc)를 제한할 수 있습니다. 이렇게 하면 컴퓨터가 완전히 응답하지 않는 것을 방지하는 데 도움이 되기를 바랍니다. , 큰 소리로 죽어(또는 문제를 일으키는 사람이 자신의 물건이 더 이상 작동하지 않는다고 불평함) 실제 원인을 알아낼 수 있습니다.
답변3
첫 번째 단계는 메모리 사용량을 모니터링하는 것입니다. top
할 수는 있지만 Linux 버전은 설정이 서툴러요. top
라는 실행 파일의 복사본을 만듭니다 top-mem-chris
. 이를 실행하고 몇 가지 합리적인 매개변수를 설정하고 최소한 메모리 사용량을 기준으로 정렬하고( M
) 상위 N개 작업만 표시합니다( n 15
). 그런 다음 구성 파일( W
) 을 생성하도록 합니다 ~/.top-mem-chrisrc
. 모니터링하려면 를 실행해 보세요 top-mem-chris -b -d 5 >~/log/top-mem-mainserver.log
.아차르, 적절해 보이지만 설명 외에는 잘 모르겠습니다.
답변4
기계에 실제 헤드가 있는 경우(가능성 없음) 친절한 데이터 센터 시설 기술자에게 caps lock일반 직접 연결 키보드를 눌러달라고 요청하세요. x86 프로세서가 여전히 인터럽트를 처리하고 있다면 제대로 작동할 것입니다. 이것이 작동하지 않으면 기계가 파손될 수 있습니다. 소등 카드, ip kvm, ps/2 및 usb 등과 같은 일부 극단적인 경우가 있다고 생각합니다.
사용 가능한 디스크 공간, 크론, 메일 스풀, 루트킷 등 일반적인 사항을 확인하세요. 또한 PSU, mem, NFS/iSCSI/FC 인터럽트와 같은 손상된 하드웨어가 다양한 작업을 수행하는 것을 보았습니다. (팁: 하드웨어 자체 테스트는 거의 항상 쓸모가 없습니다.)
다른 곳에서 언급되지 않은 경우:
- 순환 추세
sar
- 디스크 IO
iostat ALL -p ALL
- 디스크 사용량
df -h
- 네트워크 활동
iftop
- 네트워크 패킷
sudo tcpdump
- 메모리
free -lmt
- 메모리 노화 테스트:기억력 테스트 86+
- 상단 강화
htop
- 친절함의 핵심
slabtop
상단의 더 아름다운 키:
- 10개 업데이트/초d
0.1
enter - SMP 보기 전환1
- 컬러 스위치z
- 하이라이트 정렬 전환x
- 실행 중인 작업 강조 표시 전환y
- 다음 왼쪽 열을 기준으로 정렬 <(일반적으로 shift+ ,)
- 다음 오른쪽 열을 기준으로 정렬 >(일반적으로 shift+ .)
- 굵게 정렬 전환 shift+b
- 굵은 글씨로 전환b
- 오름차순 정렬 -> 내림차순 shift+r
합리적으로 예상되는 경우 / /tmp /var /var/log /var/tmp /var/spool /usr /usr/local /opt /home ...
향후 특정 시점에 시스템이 종료되는 것을 방지하려면 중요한 디렉토리를 별도의 마운트 지점으로 분할하는 것이 중요합니다 .