JEUS 일시적 메모리 사용량 폭증 및 다운 증상 해결
JEUS 일시적 메모리 사용량 폭증 및 다운 증상 해결
JEUS 일시적 메모리 사용량 폭증 및 다운 증상 해결
1. 증상
지난 포스트(맨 아래 링크)에서 JEUS-WEBTOB 503 오류를 해결했다고 하였는데, 결과적으로 근본적인 원인이 해결되지 않았던 것이었고 시간이 어느정도 흐르자 관련 증상이 다시 한번 지속 발생하였다.
조금 다른 점은 지난번과 다르게 사진의 파일 수를 아무리 줄여도 계속해서 다운 증상이 발생했다는 것이다.
2. 원인 분석
비교적 특정 시간에 증상이 계속 발현되어, 로그 분석과 함께 실시간으로 서버 리소스(메모리)를 모니터링 하기로 했다.
로그에는 OutOfMemory 관련 로그가 나왔고, 리눅스 명령어 top을 이용하여 실시간 모니터링을 함께 한 결과 증상이 발현되면서 JEUS 프로세스 메모리가 비정상적으로 폭증하는 것을 목격했다.
그 결과 이번에도 문제는 서버의 리소스(메모리) 부족으로 추정했고 그 원인도 역시 사진이었다.
조금 다른 점은 지난번에는 파일의 수에 집중했다면, 이번에는 파일의 용량에 집중하였다.
JEUS-WEBTOB 에서 실행되고 있는 코드를 분석해보니, 사진 처리를 할 때 아래와 같이 바이너리로 변환하여 처리하는 부분을 발견하게 되었다.
byte[] bytes = java.xml.bind.DatatypeConverter.parseBase64Binary(base64);
용량이 1MB만 넘어가도 바이너리로 변환되면 엄청나게 긴 문자열을 얻게 된다.
그 문자열을 통해 사진을 처리하다보니 순간적으로 용량 큰 사진 파일을 접근할 때 메모리 사용량이 폭증하며 서버(JEUS)가 감당하지 못하고 뻗어버리는 것이었다.
3. 해결
원인을 찾았으니 해결책은 간단했다.
용량이 큰 사진파일을 찾아 용량을 줄여주는 것이다.
리눅스 서버에서 용량이 큰 파일을 찾는 방법은 저번 포스트(맨 아래 링크)에서 다룬 바 있다.
추가적으로 서버의 리소스(메모리) 문제도 있는 것 같아, JUES의 JVM HEAP SIZE를 키워주는 작업도 하였다.
-Xms, -Xmx 값을 모두 2배씩 키워주었다.
값을 변경하기에 앞서 실제 할당할만큼 메모리가 여유 있는지 확인하고 작업해야 한다.
관련 포스트
2024.04.22 - [IT정보] - JEUS-WEBTOB 503 오류 해결(리눅스 서버)
JEUS-WEBTOB 503 오류 해결(리눅스 서버)
JEUS-WEBTOB 503 오류 해결(리눅스 서버) JEUS-WEBTOB 503 오류 해결(리눅스 서버) 1. 증상 영문도 모르게 갑자기 503 오류 페이지를 띄우며 WEB 서비스가 죽는 경우가 발생했다. JEUS-WEBTOB를 한 개의 리눅스
mino-1.tistory.com
2024.09.17 - [IT정보] - 리눅스 파일 용량을 기준으로 파일 검색
리눅스 파일 용량을 기준으로 파일 검색
리눅스 파일 용량을 기준으로 파일 검색find ./ -type f -size +5M -exec ls -lh {} + 1) ./: 현재 폴더를 포함한 하위 디렉터리 및 파일 대상2) -type f: 일반적인 파일3) -szie +5M: 5MB 이상의 파일4) -exec ls -lh: ls -l
mino-1.tistory.com