반응형
Tomcat 에서 로그를 보면 아래와 같은 에러메시지가 뜹니다.
java.lang.OutOfMemoryError: Java heap space
자바 heap memory가 일시적인 과도한 요구 또는 지속적인 메모리누수로 인해 더 이상 요청한 메모리를 할당할 수 없을 때 발생하는 메시지로, GC에서 메모리를 회수를 못해서 발생하는 건데, 이건 아래 heap memory size 찾아 늘려줄 수 있다.
여기서 GC란 (Garbage Collector)
- Java Appliction에서 사용하지 않은 메모리를 자동으로 수거하는 기능을 말합니다.
주 역할로는
- 메모리할당
- 사용중인 메모리 인식
- 사용하지 않은 메모리 인식
1. 현재 tomcat pid값 확인
# ps -aux | grep tomcat
tomcat 6052 6.2 10.0 7987608 1625540 ? Sl 15:07 3:46 //bin/java -Djava.util.logging.config.file=/data/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xmx2048m -Xms2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:ParallelGCThreads=2 -XX:-HeapDumpOnOutOfMemoryError -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /data/tomcat/bin/bootstrap.jar:/data/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/data/tomcat -Dcatalina.home=/data/tomcat -Djava.io.tmpdir=/data/tomcat/temp org.apache.catalina.startup.Bootstrap start
2. heap memory 확인
위에서 확인한 pid값을 통해서 heap 메모리 정보를 확인할 수 있다.
# jmap -heap [PID]
# jmap -heap 6052
Attaching to process ID 6052, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13
using thread-local object allocation.
Parallel GC with 2 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 2147483648 (2048.0MB)
NewSize = 1073741824 (1024.0MB)
MaxNewSize = 1073741824 (1024.0MB)
OldSize = 1073741824 (1024.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 786956288 (750.5MB)
used = 776871656 (740.8825454711914MB)
free = 10084632 (9.617454528808594MB)
98.71852704479566% used
From Space:
capacity = 141033472 (134.5MB)
used = 54555656 (52.02832794189453MB)
free = 86477816 (82.47167205810547MB)
38.682771704010804% used
To Space:
capacity = 133693440 (127.5MB)
used = 0 (0.0MB)
free = 133693440 (127.5MB)
0.0% used
PS Old Generation
capacity = 1073741824 (1024.0MB)
used = 100825064 (96.1542739868164MB)
free = 972916760 (927.8457260131836MB)
9.39006581902504% used
45272 interned Strings occupying 5029192 bytes.
3. heap 메모리 사이즈 변경
Catalina.sh 파일안에, 맨 윗줄에 JAVA_OPTS이 존재합니다.
해당 옵션안에 -Xmx메모리사이즈m -Xms메모리사이즈m 옵션을 통해 변경이 가능합니다.
-Xmx메모리사이즈m : MAX메모리사이즈
-Xms메모리사이즈m : MIN메모리사이즈
ex)
JAVA_OPTS="-Xmx2048m -Xms2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:ParallelGCThreads=2 -XX:-HeapDumpOnOutOfMemoryError "
설정 변경 후 TOMCAT 재시작
참고 URL)
더보기
http://www.chlux.co.kr/bbs/board.php?bo_table=board02&wr_id=110&page=5
반응형
'LINUX > WEB' 카테고리의 다른 글
Tomcat 8.5 Cookie 설정 (0) | 2022.03.21 |
---|---|
[Java] java.security.InvalidKeyException: Illegal key size 해결 방안 (0) | 2022.03.20 |
[WEB-WAS] 503 ERROR - ajp_read_header: ajp_ilink_receive failed (0) | 2022.03.14 |
SSL 에러 (unable to load certificate) (0) | 2021.07.12 |
CentOS8 - Apache + Mysql + PHP 소스설치 (0) | 2020.01.08 |