출처1 : http://grandj.tistory.com/160
출처2 : http://aljjabaegi.tistory.com/218
출처3 : https://www.lesstif.com/pages/viewpage.action?pageId=4849668
우선 메모리 확인 방법
jconsole을 실행했을 때 톰캣의 프로세스가 표기되지 않는다면,
다음과 같이 process id를 인자값으로 넘겨줄 수 있다.
[Windows의 경우]
%JAVA_HOME%\bin\jconsole.exe PID
또는
%CATALINA_HOME%\bin\tomcat9w.exe //ES//ServiceName
[Linux의 경우 - 이렇게 확인하는 경우 최대할당치는 확인이 안되고 현재 사용량만 확인 가능]
다음 명령어로 PID 획득
ps -ef | grep tomcat
다음 명령어로 현재 사용 메모리량을 확인
cat /proc/{PID}/status | grep VmSize
[tomcat의 manager에서 메모리 확인하는 방법 - 최대치 설정 확인 가능]
vi {tomcat_path}/conf/tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-status"/>
</tomcat-users>
vi {tomcat_path}/conf/Catalina/localhost/manager.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
tomcat service 재시작
systemctl restart tomcat
다음으로 접속하여 메모리 확인
http://{serverip}/manager/status
개발 테스트를 진행하면서 웹서버를 돌리는데 다음과 같은 오류로 서버가 가끔 죽었다.
java.lang.OutOfMemoryError: Java heap space
찾다보니 기본 적용된 메모리가 작아서 오류가 난다는 이야기가 있었고 다음과 같이 설정 후 테스트 중이다.
다만 아래 방법 중 catalina.bat 파일에 설정하는 경우
윈도우 서비스로 톰캣 구동시 옵션이 적용되지 않는다.
하여 서비스로 등록한 경우에는 다음과 같이 서비스 등록을 한 후 옵션 변경을 하도록 한다.
원래 tomcat.exe //US//ServiceName 으로 파라미터를 업데이트 하라고 하는 것 같은데 옵션이 먹지 않더라.
[Windows Service 구동시 옵션 변경 - 확인함]
명시적으로 주기
set JvmMs=1024
set JvmMx=2048
%CATALINA_HOME%\bin\Service.bat INSTALL ServiceName
또는
%CATALINA_HOME%\bin\tomcat9w.exe //ES//ServiceName
실행하여 GUI에서 수정
[Linux Service 구동시 옵션 변경 - 확인함]
[$CATALINA_HOME\bin\catalina.sh]
최상단에 추가
JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:MaxPermSize=512m"
다음은 서비스 등록이 아닌 일반실행인 경우
Windwos
[\bin\catalina.bat]
setlocal 삭제
set "CATALINA_OPTS=-Xms2048M -Xmx2048M -XX:PermSize=512M -XX:MaxPermSize=512M"
Linux - Service 구동과 같음
[\bin\catalina.sh]
최상단에 추가
JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx2048m -XX:MaxPermSize=512m"