톰캣 운영시, JVM 옵션과 같은 추가 설정을 좀 더 깔끔하게 관리할 수 있는 방법에 대해 정리한다.
문제점
- 대부분의 시스템들은 JVM 관련 옵션을 catalina.sh 파일을 수정하여 사용함.
- 이렇게 catalina.sh 파일을 수정을 하게될 경우 유지보수에 많은 어려움이 있다.
톰캣 버전 업그레이드나, 서버이전 등과 같은 작업이 발생할 경우 설정된 옵션을 옮기기 위해서 주의하여 값을 추출하여야 한다.
- 또한, catalina.sh을 지속적으로 수정하게 된다면 톰캣의 메일 sheell을 잘못 건드릴 수 있는 위험성이 존재한다.
[현재 catalina.sh 예시]
# -----------------------------------------------------------------------------
# OS specific support. $var _must_ be set to either true or false.
CATALINA_OPTS="-server -Xmx2g -Xms2g -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseParallelOldGC -Dfile.encoding=UTF-8"
CATALINA_OPTS="$CATALINA_OPTS -verbosegc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails"
cygwin=false
os400=false
darwin=false
case "`uname`" in
CYGWIN*) cygwin=true;;
OS400*) os400=true;;
Darwin*) darwin=true;;
esac
...
해결방법
- 톰캣에는 이러한 옵션값을 추가할 수 있는 또 다른 방법을 제공한다. 바로 bin 하위에 setenv.sh 파일을 사용하는 방법이다.
- 해당 파일은 기본적으로 존재하지 않으며, 직접 쉘 파일을 생성해줘야 한다.
[/bin/setenv.sh 파일 생성]
-------------------------------------------------------------------------------------------------------------------
CATALINA_OPTS="-server -Xmx2g -Xms2g -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseParallelOldGC -Dfile.encoding=UTF-8"
CATALINA_OPTS="$CATALINA_OPTS -verbosegc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails"
-------------------------------------------------------------------------------------------------------------------
setenv.sh이 있을 경우 catalina.sh에서 다음과 같이 setenv.sh 파일을 로드하게 된다.
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
. "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
. "$CATALINA_HOME/bin/setenv.sh"
fi
마치며
- setenv.sh로 옵션 정보를 옮기게 된다면 위에서 언급한 것처럼 톰캣 업그레이드나 서버이전 등과 같은 작업이 있을 경우 좀 더 편리한 장점이 있다.
(setenv.sh과 server.xml 파일만 옮기면 톰캣에 관한 설정은 끝날 듯)
- 또한, 옵션을 처리하는 영역이 명확히 분리되기에, 옵션을 추가하는 등 유지보수 측면에서도 좋은 역할을 할 것이라 생각한다.
'서버 > 톰캣' 카테고리의 다른 글
[톰캣] server.xml 설정 (1) | 2016.07.01 |
---|---|
[톰캣] conf 디렉토리 설정파일 (1) | 2016.06.24 |
[톰캣] 디렉토리 구성 및 환경변수 (1) | 2016.06.09 |
[톰캣] 톰캣7 설치 (0) | 2016.05.30 |
[톰캣] 버전별 Servlet, JSP, JAVA 지원 스펙 (0) | 2016.04.12 |