tomcat 메모리 설정

최종윤·2023년 12월 7일
1

스프링

목록 보기
5/6

테스트 데이터를 많이 넣고 실행하면 토이 프로젝트하면서도 이런 일 을 겪어볼 수 있을까?

대용량 데이터를 다룰 때, 용량이 너무 커서 톰캣 서버가 죽는 현상이 있을 경우. catalina.bat에서 힙 메모리 설정을 해주면 됩니다.

Tomcat out of memory

tomcat으로 서비스를 하다가 out of memory 오류가 나는경우가 있을것이다. 자주 발생하는 에러로는

Java.lang.OutOfMemoryError: Java heap Space Heap size error
Java.lang.OutOfMemoryError: Permgen space PermGen space error
이런 메모리 오류의경우 여러가지 원인이 있을수 있으나 메모리공간의 부족으로 일어나는 에러로써, ‘일단은’ 메모리 사이즈를 늘려주는 방법으로 문제를 해결 해 줄 수있다.
실제로 에러가 났을때는, 원인파악이 가장 중요할것이다.

Tomcat 메모리 설정

tomcat 설치 폴더/bin/catalina.sh 파일에 자바 옵션 설정을 추가하여 톰캣 메모리 할당 옵션을 지정할 수 있습니다.

JAVA_OPTS="$JAVA_OPTS -Xms512m -Xms512m -XX:MaxPermSize=128m"

아래 설정의 변경으로 사이즈를 원하는대로 설정해 줄 수 있다.

catalina.sh파일에는 자바 옵션 설정 및 톰캣 로그 경로등 각종 설정을 저장할 수 있습니다.

  • CATALINA_OPTS: start, run, debug 명령어 구동 시 사용되는 자바 런타임 옵션에 해당한다. 톰캣 자체에서만 사용되는 옵션들만 포함되며 중지 프로세스,버전 명령등으로는 사용해서는 안 됩니다.
  • JAVA_OPTS: 명령어 실행될 때 사용되는 자바 런타임 옵션이다. 톰캣에 의해 사용가능하고 중지 프로세스, 버전 명령에도 사용됩니다.
  • -Xms: 최소 java heap size 최초 JVM이 로드될 때 부여되는 메모리이다(start size)
  • -Xmx: 최대 java heap size 최대 JVM이 가질 수 있는 메모리이다.(maximum size)
  • -XX:MaxNewSize=: Young Generation의 최대 size
  • MaxPermSize : permenant의 size

설정 변경 후
ps -ef|grep tocat Java 메모리 옵션 확인

  1. JVM Heap Memory Size 변경

    bin\catalina.sh 파일을 열어 가장 상단에 아래 내용 추가 한다.

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024M -Xmx1024M -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512M -XX:MaxPermSize=512M -XX:+DisableExplicitGC"

  1. JRE 메모리 누수 처리

    conf\server.xml 파일에 아래 코드를 찾아 없으면 추가, 주석이라면 주석 제거 한다.

  1. Thread pool 설정

    conf\server.xml 에서 사용할 포트 커넥터에 아래 내용으로 변경 한다.

https://inpa.tistory.com/entry/TOMCAT-%E2%9A%99%EF%B8%8F-%ED%86%B0%EC%BA%A3-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%8A%98%EB%A6%AC%EA%B8%B0
http://www.kkujunhee.net/bbs/board.php?bo_table=os&wr_id=19
https://taes-k.github.io/2019/06/17/server-tomcat-memory/

profile
https://github.com/jyzayu

0개의 댓글