본문 바로가기
IT/Web

Tomcat 적정 메모리

by 최고영회 2013. 12. 30.
728x90
반응형
SMALL
Q
최근 Tomcat 에 web application 이 여러개 추가 되다 보니
메모리 부족으로 ( outofmemory exception 발생) jvm 이 죽는 현상이 자주 발생 됩니다.
임시적으로 heap space 를 늘리고 톰캣 가용 메모리를 늘려서 처리하고 있으나 일반적으로 web-application 이 사용하는 memory 를 어떻게 측정하여 web application 이 늘어날때 마다 적당한 가용 메모리를 어떻게 설정해야 할까요? 회사 web application source 를 보면 static 이 너무 많더군요..
관련하여 좋은 의견 부탁 드립니다.
--------------------------------------------------------------------------------------------------------
A
일단 프로파일러를 통해서 메모리 사용이 적정한지 파악하는게 중요하다고 생각합니다. 메모리 누수를 찾거나 특정 조건에서 메모리를 과다하게 사용하고 있는 시점은 없는지 파악하는 것이지요. 

그리고, 예전에 특정 기관에서 서버 다운 문제를 해결할 때 메모리를 너무 과다하게줘서 몇 번씩 다운된 문제가 있었습니다. IBM AIX & WebSphere 였고, Min 2G/Max 2G 로 줬는데 Min 512M/Max 2G 로 바꿔줬더니 문제가 없더군요. 
지금 제가 테스트하고 있는 장비는 4GB 메모리를 가진 장비(클라우드)인데, 아래와 같이 조금 적게 잡고 씁니다. 

export CATALINA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1539m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=800m -XX:MaxNewSize=1200m -XX:SurvivorRatio=4 -XX:+DisableExplicitGC"
--------------------------------------------------------------------------------------------------------
A
application이 올라간다라고 하셨고, oom만 언급하셨는데, 

perm 영역이 부족한 것인지 확인해 주십시오. 에러 메시지에 perm영역이 부족한지 그냥 heap이 부족한지 나올 것입니다. 
(sun oracle jdk 기준. ibm은 다를 수 있습니다.) 

추가로, sun oracle jdk에서 아래 옵션으로 oom시 heap dump를 내리는 것을 활용해 메모리 누수를 확인해 볼 수 있습니다. 

-XX:+HeapDumpOnOutOfMemoryError


728x90
반응형
LIST