728x90
반응형
buildPack의 bootBuildImage를 통해 JvmOption을 줄 때, 아래와 같이 설정함
static def getEnvs(heapDumpPath, envVal) {
def jvmOptions = [
"-Xms512m",
"-Xmx1024m",
"-XX: MaxDirectMemorySize=100M",
"-XX:+HeapDumpOnOutOfMemoryError",
"-XX:HeapDumpPath=${heapDumpPath}"
]
return [
"BPE_DELIM_JAVA_TOOL_OPTIONS": " ",
"BPE_APPEND_JAVA_TOOL_OPTIONS": jvmOptions.join(" ")
]
Heap Memory Size를 512 ~ 1024 MB로 설정, nio 패키지에서 네트워크 및 디스크를 효율적으로 사용하기 위한 외부 Direct memory는 Max의 10% 정도인 100MB로 설정했다.
그리고 HeapDump 관련 설정들을 하였는데, OutOfMemory가 발생하면 설정한 컨테이너 내부 경로의 heapDumpPath로 힙덤프 파일이 떨어지게 된다. 이후 이 파일을 AWS S3 등 저장소로 옮겨 분석하면 메모리 누수가 나는 부분을 분석할 수 있게 된다.
728x90
반응형
'Programming-[Backend] > Java' 카테고리의 다른 글
Virtual Thread 기초 (0) | 2024.12.08 |
---|---|
비동기 작업: @Async 어노테이션, 스레드 관리 (0) | 2024.11.14 |
[TIL] Docker image JVM Heap 크기 및 옵션 설정, buildpack-gradle bootBuildImage, Packeto buildpack (0) | 2024.07.26 |
자바 기초 강의 정리 - 8. 클래스 패스, JAR (0) | 2024.07.15 |
자바 기초 강의 정리 - 7. 리플렉션, 어노테이션, 클래스 로더 (0) | 2024.07.14 |