2012-08-07 5 views
1

여기에 까다로운 내용이 있습니다. Amazon EBS의 Tomcat 웹 서버에 배포 된 Java 웹 응용 프로그램이 있습니다. 우리는 메모리 누수가 있다고 믿습니다. b/c OutOfMemory 예외로 JVM이 매일 밤 충돌하는 것 같습니다. 문제는 충돌 후 EBS이 자동으로 이전 EC2 인스턴스를 스크랩하고 새로운 인스턴스를 시작한다는 것입니다. 모든 로그와 정보도 폐기됩니다 ...Amazon EBS에서 OutOfMemory 오류를 잡는 방법

지금 JVM의 메모리를 모니터링하는 사용자 지정 CloudWatch 메트릭을 개발 중입니다 (준비된 것이 있어야한다고 생각 하겠지만 ...). 그러나 도움이되지 않습니다. 나는 힙 덤프를 생성합니다.

비슷한 문제를 겪은 사람이 누구이며 EBS에서 이러한 오류를 잡는 방법을 알고 있습니까?

+2

EBS는 스토리지 서비스입니다. 이것이 메모리 문제와 어떻게 관련이 있습니까? –

+0

나는 당신의 문제가 분명하지 않다고 여깁니다. 우리도 Amazon EBS에 tomcat 서버를 가지고 있으며 몇 시간 동안 메모리 오류가 발생했지만 오류는 tomcat 만 충돌하고 EC2 인스턴스에는 영향을 미치지 않습니다. EBS 인스턴스를 일반 서버로 생각하십시오. tomcat의 충돌로 인해 시스템이 재부팅되지 않습니다. – Kamal

+1

EBS는 저장소 서비스가 아닌 탄력적 인 beanstalk입니다 (S3). EBS의 기능 중 일부는 현재 트래픽에 따라 자동으로 시작되고 종료되는 최소 및 최대 인스턴스를 정의하는 자동로드 균형 조정입니다. 최소 인스턴스 수는 1보다 작을 수 없습니다. 따라서 실행중인 인스턴스가 하나 있고 바람둥이가 HTTP 요청에 응답하지 않으면 EBS는 자동으로 EC2 인스턴스를 종료하고 새 인스턴스를 시작합니다. 그게 EBS의 가장 기본적인 특징이지 않습니까 ??? –

답변

0

이것은 확실히 비정상적인 EC2 (EBS가 아닌) 인스턴스 동작처럼 들립니다. Tomcat이 넘어져서 머신 인스턴스가 영향을 받는다는 것은 흥미 롭습니다 (중지 또는 종료의 관점에서).

내가 진단하는 것이 좋습니다 것 인 것이다 :

  1. 은 "종단 보호"를 살펴 놀이/검사 읽고 실행중인 인스턴스를 얻을 - "활성화"이 세트 인 또는 아닙니다. 문제의 "폐기"부분을 설명 할 수 있습니다 (인스턴스를 파기하면 인스턴스가 종료되고 제거된다는 의미입니다). 이것은 AWS 콘솔을 사용하여 EC2 인스턴스의 속성에서 찾을 수 있습니다.
  2. Tomcat 서버가 구성된 Java 메모리 설정을 살펴보십시오. 아마도 가상 머신의 최대 크기는 (Xmx) 더 커질 것입니다. 만약 그렇다면 아마도 Tomcat은 말 그대로 컴퓨터를 메모리 부족 상태로 돌리고 있으며 이는 메모리 부족에 대한 EC2 응답의 일부를 설명 할 수 있습니다. 나는 당신이 "폐기 된"것이 아니라 "중지 된"것을 의미한다고 가정합니다. 그렇지 않다면 당신은 당신의 기억력 부족을 어떻게 알 수 있습니까?
  3. 작동중인 인스턴스에서 tomcat/java 프로세스를 수동으로 종료하는 경우 인스턴스가 작동 상태를 유지합니까 (아니면 부팅되고 인스턴스가 중지됩니까?)? 단순히 바람둥이를 멈추었 기 때문에 무언가가 발생하면 모니터링 프로세스가 시작되어 명시 적으로 시스템을 중단하고 있음을 의미합니다.
  4. -XX : -HeapDumpOnOutOfMemoryError를 사용하여 덤프 파일을 생성합니다. 이는 누수가있는 곳에서 작업하고 근본 원인을 수정하는 데 도움이됩니다.

행운을 빈다. 희망이 도움이됩니다.

+0

안녕 조위,, 늦은 답변을 드려 죄송합니다. 이것은 EC2가 아닌 EBS 문제입니다 (질문 게시에 대한 내 의견을 참조하십시오. EBS의로드 균형 조정은 참조하는 일부 모니터링 프로세스입니다.그것은 EC2에서 실행되지만 인스턴스의 "폐기"와 새 인스턴스 시작에 대한 책임이 있습니다.) 인스턴스 폐기의 문제를 해결하지는 못했지만 openjdk를 핫스팟으로 대체하고 최신 AWS SDK로 업그레이드하여 메모리 부족 문제를 해결했습니다. 나는 "Termination Protection"을보고 수동으로 바람둥이를 죽일 것이다. –

0

Sumologic과 같은 로그 수집 서비스를 고려하십시오. 지정한 로그 파일이 수집되어 온라인으로 분석 할 수 있습니다. 따라서 EC2 인스턴스가 바뀌더라도 법의학을 통해 어떤 일이 일어 났는지 확인할 수 있습니다