출처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"



Posted by motolies

댓글을 달아 주세요