Tomcat 성능 저하의 주요 원인, JVM 메모리 부족
Tomcat 사용 중 응답 속도가 느려지거나 성능 문제가 발생한다면, 가장 흔한 원인 중 하나는 JVM(Java Virtual Machine) 메모리 할당량 부족입니다. 기본 설정된 최대 힙(heap) 크기는 64MB 또는 128MB로, 실제 운영 환경에서는 턱없이 부족한 경우가 많습니다.
이 문제는 -Xmx JVM 파라미터를 조정하여 애플리케이션의 최대 힙 크기를 늘리는 것만으로도 간단히 해결할 수 있습니다.
-Xmx 파라미터란?
-Xmx는 JVM이 사용할 수 있는 최대 힙 메모리 크기를 지정하는 옵션입니다. 예를 들어 -Xmx512m으로 설정하면 JVM에 최대 512MB까지 힙 메모리가 할당됩니다.
Windows에서 환경 변수 설정하기
파라미터를 조정하려면 먼저 [내 컴퓨터] 아이콘을 마우스 오른쪽 버튼으로 클릭한 후 [고급] 탭으로 이동합니다. 이어서 [환경 변수] 버튼을 클릭합니다.

새로운 CATALINA_OPTS 변수를 생성하고 원하는 값을 입력합니다. 예를 들어 "-server -Xmx256m"과 같이 설정할 수 있습니다.
Linux/UNIX에서 환경 변수 설정하기
Linux 또는 UNIX 환경에서는 터미널을 열고 sudo su – tomcat 명령어로 tomcat 계정으로 전환합니다. 물론 서버 설정에 따라 실제 Tomcat을 구동하는 계정 이름이 다를 수 있으니, 반드시 Tomcat을 실행하는 데 사용되는 계정으로 전환해야 합니다.
그다음 CATALINA_OPTS와 JAVA_OPTS 두 환경 변수를 모두 확인하고, 값을 더 높게 조정합니다. 예를 들어 JAVA_OPTS가 최소 64MB, 최대 128MB로 설정되어 있다면 각각 128MB와 256MB로 늘리는 식입니다.
OLD: JAVA_OPTS="-Xms64m -Xmx128m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000" NEW: JAVA_OPTS="-Xms128m -Xmx256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
주의사항: 물리적 RAM 크기보다 작게 설정
최대 힙 크기는 반드시 서버의 물리적 RAM 용량보다 작은 값으로 설정해야 합니다. RAM보다 큰 값을 지정하면 메모리가 하드 디스크로 스왑(swap)되어 오히려 성능이 더 크게 저하될 수 있습니다.
새 설정이 적용되었는지 확인하기
설정 변경 후에는 브라우저에서 Tomcat 서버 URL에 접속한 뒤 Status 항목을 클릭합니다.

JVM 섹션 아래에 새로운 메모리 값이 표시되는지 확인합니다.

설정이 반영되지 않았다면?
페이지에 업데이트된 JVM 메모리 값이 보이지 않는다면 Tomcat을 재시작해 보세요. 환경 변수 변경 사항은 Tomcat을 다시 시작해야만 적용됩니다.
이 과정을 통해 Tomcat의 성능 저하 문제를 해결하고, 서버 측 스크립트에서 발생할 수 있는 메모리 부족(Out of Memory) 오류도 예방할 수 있습니다. 추가로 궁금한 점이 있다면 댓글로 남겨주세요!