2017-03-21 2 views
1

무료 티어 (인스턴스 유형 : t1.micro)에서 64bit Amazon Linux 2016.09 v2.5.2 running Tomcat 8 Java 8 환경을 실행 중입니다.AWS : Java Runtime Environment를 계속 실행할 수있는 메모리가 충분하지 않습니다.

나는 몇 가지 작업을 수행하는, 내가 지속적으로 502 error를 얻을, 하나 개의 특정 서비스를 호출하여 RESTful 서비스의 번호를 가지고 있고, 로그에 다음

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000e2220000, 130215936, 0) failed; error='Cannot allocate memory' (errno=12)

There is insufficient memory for the Java Runtime Environment to continue. Native memory allocation (mmap) failed to map 130215936 bytes for committing reserved memory. An error report file with more information is saved as: /tmp/hs_err_pid31500.log OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=64m; support was removed in 8.0

질문

유료 버전, 즉 인스턴스 유형 인 t1.micro보다 업그레이드해야한다는 뜻입니까?

또는이를 처리 할 환경을 구성 할 수있는 방법이 있습니까?

위의 로그는 Java 응용 프로그램이 (130215936 bytes)의 메모리 만 필요로한다는 것을 나타 내기 때문에, 아래에서 JVM heap 크기가 훨씬 더 크게 보이는 것을 볼 수 있습니다. 그래서 나는 그것이 130mb에 넘어 지리라고 기대하지 않았을 것입니다.

추가 정보

나는 다음과 같은 구성 설정이 수행

enter image description here

감사

UPDATE

나는,321 변경을 256mb-0,하지만 여전히 오류 얻을 :

OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0 OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 89456640, 0) failed; error='Cannot allocate memory' (errno=12)

There is insufficient memory for the Java Runtime Environment to continue. Native memory allocation (mmap) failed to map 89456640 bytes for committing reserved memory. An error report file with more information is saved as: /tmp/hs_err_pid14014.log OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0

를하지만 여기에만 89mb에 이상 떨어진다.

+1

요청중인 힙 크기를 처리하기에 충분한 메모리가 인스턴스에 있습니까? 최대 jvm 힙 크기를 더 작은 것으로 변경해보십시오. – muzzlator

+0

우리에게 메모리 통계 결과를 알려주십시오. 상단 또는 htop 등을 사용하십시오. – Sam

+0

AWS 환경에서이를 수행하는 방법을 잘 모르겠습니다. 내가 아는 한 명령 줄에는 액세스 할 수 없습니다. 아니면 내가? – Richard

답변

2

업데이트의 오류 메시지에 따르면 JVM 영구 생성 크기를 조정하려고 한 것 같습니다. 이 설정을 기본값 그대로 두십시오. 대신 초기 및 최대 힙 크기를 모두 64MB로 설정하십시오.

여전히 크래시가 발생하면 충돌이 발생하면 AWS 인스턴스로 ssh를 보내고 메모리를 사용 중인지 살펴볼 수 있습니다. beanstalk의 환경 구성에서 "인스턴스"아래에서 인스턴스와 함께 사용할 키 쌍을 선택할 수 있습니다. 다른 인스턴스와 마찬가지로 EC2 콘솔에서 Beanstalk에 의해 시작된 인스턴스를 찾을 수 있습니다.

+0

감사합니다. 나는 그 충돌을 일으키는 코드를 안다. 문장에서 명사를 청취하기 위해 청중에게 몇 마디하고 있습니다. 내 로컬 호스트에서 제대로 실행되지만 AWS Elastic Beanstalk에서 넘어집니다. 그러나 저를 놀라게 한 것은 로그 파일 (130MB)에서보고 된 것처럼 많은 메모리를 사용하지 않고 있다는 것입니다. 초기 및 최대 힙 크기를 64MB로 설정하고 어떤 결과가 발생하는지 확인합니다. – Richard

+0

초기 및 최대 힙 크기를 64MB로 조정 한 후 다음을 얻습니다. java.lang.OutOfMemoryError : Java 힙 공간 – Richard

+0

@ 리차드, 이제는 메모리가 부족한 Java 프로세스입니다. 초기/최대 메모리를 점차적으로 늘려보십시오. 128MB와 256MB를 시도하십시오. 컴퓨터의 메모리가 부족한 상태로 돌아가려면 인스턴스에 로그인하여 나머지 메모리를 사용하고 있는지 확인하십시오. 한 번 256mb 힙 크기에 도달하면 여전히 Java OutOfMemoryError가 발생하지만 t2.micro를 사용할 수 없다고 생각합니다. – Maxime