Language/JSP
omcat out of memory 메모리 설정
적외선
2013. 11. 19. 15:19
윈도우용 설정
%root%\bin
setenv.bat 파일 생성후
set JAVA_OPTS=-Xms256m -Xmx512m
이거 적어줌..
그리고 startup.bat 실행
질답.
1. 어플리케이션 서버에서 필요한 메모리 계산 방법
- 계산식 : (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
- 메모리 계산 예
가정 : Java 1.5를 사용중이며 OS가 120MB를, 디폴트 스택사이즈는 0.5M
- JVM에 1.5GB할당되었을 경우 : (2GB-1.5Gb-120MB)/(1MB) = ~380 threads
- JVM에 1.0GB할당되었을 경우 : (2GB-1.0Gb-120MB)/(1MB) = ~880 threads
2. Application Server 에러 대처 방안(java.lang.OutOfMemoryError: PermGen space 현상)
- Tomcat의 경우 v6.0.14이상의 안정적 릴리즈 된것을 선택
- JDK1.4보다는 1.5, 1.6의 사용을 권고함
- -XXMaxPermSize 설정을 통해 perm 사이즈를 증가시킴
- JHat으로 메모리릭 원인을 찾고 JConsole, Lambda probe 등을 통해 메모리 모니터링을 함
- Application Server운영자는 Garbage Collection에 대한 이해가 있어야 함
3. Tomcat에서 설정 예시
- 힙메모리 정보를 출력 : -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC
위 설정을 통해 출력되는 로그를 보고 New Generation의 eden 영역, Old Generation 영역, Permanent 영역을 확인하여 각 영역이 작으면 아래와 같은 설정으로 적당 사이즈를 확보해 줍니다.
- 도출된 설정 : -Xms256m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:SurvivorRatio=5
-Xms : 최소 힙 싸이즈
-Xmx : 최대 힙 싸이즈
-XX:NewSize : New Generation의 최소 싸이즈
-XX:MaxNewSize : New Generation의 최대 싸이즈
-XX:MaxPermSize : Permanent Generation의 최대 싸이즈 가 되겠다.
-XX:SurvivorRatio : 영역비율(New Generation)
결론적으로 적용할 설정은 아래와 같습니다.
- CATALINA_OPTS="-server -Xss256k -Xms256m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:SurvivorRatio=5 -XX:ReservedCodeCacheSize=128m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true "