톰캣 메모리 부족 - tomkaes memoli bujog

문제 상황

Tomcat 구동 중 "java.lang.OutOfMemoryError:PermGen space" 에러가 나타나면서 서버가 종료된다.

문제 원인

서버 메모리 부족이 원인으로, JAVA VM  옵션을 사용하여 PermGen memory 크기를 늘려야 한다.

문제 해결

catalina.bat을 수정한다.

{$tomcat-folder}\bin\catalina.bat

set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xms512m -XX:MaxPermSize=128m

톰캣을 재시작 한다. 만약 적용이 안되었다면, webapps 안에 풀려진 폴더를 삭제한다.

-XX:PermSize : 초기 PermGen 사이즈

-XX:MaxPermSize : 최고 PermGen 사이즈

The maximum size of the static resource cache in kilobytes. If not specified, the default value is 10240 (10 megabytes). This value may be changed while the web application is running (e.g. via JMX). If the cache is using more memory than the new limit the cache will attempt to reduce in size over time to meet the new limit. If necessary, cacheObjectMaxSize will be reduced to ensure that it is no larger thancacheMaxSize/20.

* /usr/libexec/tomcat9/bin/ 경로에 setenv.sh 파일을 생성하고 아래 내용을 입력해준다.

export CATALINA_OPTS="$CATALINA_OPTS -Xms256m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx512m"

 

* Xms : 최소 Heap Size

* Xmx : 최대 Heap Size

 

 

* 적용여부 확인

[root@ip-172-26-13-216 logs]# pwd
/usr/libexec/tomcat9/logs

[root@ip-172-26-13-216 logs]# grep -e "Xms" -e "Xmx" *.log
catalina.2020-04-09.log:09-Apr-2020 17:25:04.265 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms256m
catalina.2020-04-09.log:09-Apr-2020 17:25:04.265 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx512m

 

공유하기

게시글 관리

구독하기프로그래머 야용이 ^^

Tomcat에서 성능 문제가 발생하는 경우 일반적으로 JVM (Java Virtual Machine) 메모리 할당이 부족합니다. 최대 힙 크기의 기본 설정은 64MB 또는 128MB입니다. -Xmx JVM 매개 변수를 설정하여 응용 프로그램의 최대 힙 크기를 늘릴 수 있습니다.

교토의 관광 명소 베스트 10

Please enable JavaScript

교토의 관광 명소 베스트 10

예를 들어 -Xmx512m을 사용하면 JVM에 최대 512MB 힙을 할당 할 수 있습니다. 이 매개 변수를 조정하려면 내 컴퓨터 아이콘을 마우스 오른쪽 단추로 클릭 한 다음 고급 탭을 선택하십시오. 환경 변수 단추를 누르십시오.

톰캣 메모리 부족 - tomkaes memoli bujog

CATALINA_OPTS 변수를 작성하고 " -server -Xmx256m "과 같이 원하는 값을 설정하십시오.

Linux 또는 UNIX에서 실행중인 경우 터미널에 가서 sudo su - tomcat 또는 설정에 따라 해당 계정 이름을 사용하여 tomcat 계정을 사용하십시오. Tomcat을 실행하는 데 사용되는 계정을 사용해야합니다.

CATALINA_OPTS 및 JAVA_OPTS 환경 변수를 모두 점검하십시오. 환경 변수를 더 높은 값으로 설정하십시오. 예를 들어, JAVA_OPTS 변수에 최소 64MB 및 128MB 최대 힙 크기가 포함되어 있으면 128MB 및 256MB 값으로 늘리십시오.

가장 중요한건 물리적인 RAM의 부족인것 같다. 닫을 수 있는건 모두 닫아보고 다시 시도를 해보자. 필자의 경우는 크롬의 탭이 너무 많이 열려 있어서 그것만 좀 닫아줬더니 그 후로는 문제가 없었다. 다 닫아도 안된다면 Possible solutions 에 나온것처럼 eclipse.ini (or STS.ini) 파일의 Xmx / Xms / Xss 등을 수정해보자. 

로그를 보시면 WARNING으로 web application was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the catch의 로그가 거의 99%입니다. 내용은 캐쉬 없다고 경고 메시지네요.

메모리 부족 오류(OOME) 에서 일반적이다 아파치 톰캣, 기본 애플리케이션의 버그가 주요 원인입니다. 경우에 따라 Apache Tomcat이 높은 트래픽을 처리하지 못할 수 있습니다.

Apache Tomcat 7 및 업데이트된 버전은 메모리 부족 오류, 당신은 여전히 ​​그들을 만날 수 있습니다.

이 가이드에서는 다음과 같은 기회를 줄이기 위해 구현할 수 있는 다양한 조치에 대해 설명합니다. Apache Tomcat 메모리 부족 오류.

메모리 부족 오류란 무엇입니까?

메모리 부족 오류는 Apache Tomcat 인스턴스가 힙에 할당된 모든 메모리를 사용하여 응용 프로그램이 충돌했음을 의미합니다.

Apache Tomcat에서 Out of Memory가 발생하는 구체적인 이유를 제시하는 것은 거의 불가능합니다. 그러나 대부분은 서버에서 실행되는 응용 프로그램의 결과입니다.

메모리 부족 오류의 원인은 다음과 같습니다.

  1. 힙 크기가 너무 작습니다.
  2. 파일 디스크립터 없음
  3. 고도로 재귀적인 코드
  4. 대용량 파일을 메모리에 로드
  5. 호스트 OS에서 허용하는 것보다 높은 스레드.

Apache Tomcat OOME를 해결하는 방법

메모리 부족 오류를 해결하는 가장 간단하고 일반적인 방법은 Java 힙 크기를 늘리는 것입니다.

Windows에서 시작 메뉴를 열고 "톰캣을 구성합니다.”

그런 다음 Java 탭으로 이동하여 초기 메모리 풀 및 최대 메모리 풀 값을 설정합니다.

톰캣 메모리 부족 - tomkaes memoli bujog

1024MB의 초기 메모리 풀과 최대 2048MB이면 충분합니다. 귀하의 요구 사항에 따라 자유롭게 조정하십시오.

적용을 클릭하고 Apache Tomcat 서비스를 다시 시작합니다.

Linux를 사용하는 경우 터미널을 열고 아래 명령과 같이 Java 힙 크기를 설정합니다.

세트"JAVA_OPTS=-Xms1024m -Xmx2048m -XX: MetaspaceSize=1024M -XX: MaxMetaspaceSize=2048m"

이전 명령에 지정된 값은 MB 단위입니다.

결론

이 빠른 가이드에서는 Java 힙 크기와 메모리 부족 오류의 원인을 늘려 Apache Tomcat 메모리 부족 오류를 해결하는 간단한 방법에 대해 설명했습니다. 이 기사가 Apache Tomcat 메모리 부족 오류를 해결하는 데 도움이 되기를 바랍니다. 이 기사를 읽어 주셔서 감사합니다. 다른 기사도 확인하십시오.