IT 일기장
[Linux] OpenJDK 64-Bit Server VM warning INFO oscommit_memory(0x000000075c300000, 378011648, 0) failed error=메모리를 할당할 수 없습니다 (errno=12) 본문
[Linux] OpenJDK 64-Bit Server VM warning INFO oscommit_memory(0x000000075c300000, 378011648, 0) failed error=메모리를 할당할 수 없습니다 (errno=12)
뽕슈 2023. 8. 8. 00:39상황
테스트 서버에 배포하고 재기동을 시켰는데 다음과 같은 스크린샷이 확인됐다..
원인
원인과 해결책의 정석은 사실 메모리 누수가 되는 소스가 어디인지 찾고 그 소스를 수정해야되는 방법으로
가는게 맞는데, 고객과 기획자에게 당장 내일까지 보여줘야됐던 상황이였던지라 마음이 좀 급하여 임시방편(?)
방법으로 개선하였다.
원인은 역시나.. 메모리를 사용하는곳이 너무 많고 사용할 수 있는 메모리가 초과하여 생긴 오류다.
free -h
해결
해결은 swap을 이용했다. swap이란 실제 메모리가 가득 찼지만 더 많은 메모리가 필요할때 디스크 공간을 이용해서 부족한 메모리를 대체할 수 있는 공간을 의미한다. 가상 메모리 같은 개념인데 속도면에서는 하드디스크를 이용하는 것이라 메모리 속도면에서는 떨어지는 단점이 있다. (그래도 아예 없는건 좀 놀라웠다.) 그래서 swap 메모리 공간을 2GB 정도 확보하기 위해 root 계정으로 접근하여 swapfile을 만들려 했는데 이 역시도 없었다.. (진짜 서버 깡통만 설치해줬구나)
sudo touch /var/spool/swap/swapfile
없어도 상관은 없다. 해당 경로에 swap 폴더를 만들어주면 그만이다. 그래서 만들고 다시 한번 해봤다.
mkdir var/spool/swap
잘 만들어졌고 swap은 Red Hat 공식사이트에서 권장 용량이 있더라.. 추후에 도움이 될지도
설치된 RAM 용량 | 권장되는 스왑 용량 | 최대절전을 허용할때 권장되는 스왑용량 |
2GB or less | RAM 용량의 2배 | RAM 용량의 3배 |
> 2GB - 8GB | RAM 용량 | RAM 용량의 2배 |
> 8GB - 64GB | 적어도 4GB ~ RAM 용량의 1 / 2 배 | RAM 용량의 1.5배 |
> 64GB or more | 적어도 4GB | 최대절전이 권장되지 않음 |
아까 실패했던 명령어를 다시 입력하고, 2GB를 할당해주는 명령어를 입력했다. 그 다음 권한을 부여하고 swap을 만든다음 켜주는 일련의 과정을 거쳤다.
sudo dd if=/dev/zero of=/var/spool/swap/swapfile count=2048000 bs=1024
chmod 600 /var/spool/swap/swapfile
mkswap /var/spool/swap/swapfile
swapon /var/spool/swap/swapfile
그 다음 fstab 편집기 열어서 swap을 다음과 같이 추가해줘야한다.
vi /etc/fstab
# swap 추가
/var/spool/swap/swapfile none swap defaults 0 0
그리고 다시 메모리를 확인해보면 swap에 2GB가 추가된 것을 확인할 수 있다. 재기동하면 정상적으로 실행은 됐으나, 메모리는 어디서 잡아먹는건지는 본인이 직접 찾아야된다. 다행히도 지금의 나는 찾았다.
'프로그래밍 언어 > Server' 카테고리의 다른 글
[Server] Fiddler를 활용한 운영서버에 있는 소스 분석 (0) | 2024.08.29 |
---|---|
[Server] sftpuser.sh 계정 삭제 (0) | 2022.10.04 |
[Windows 10] Apache 자동 실행 중지 (0) | 2022.09.19 |
[CMD] 8080 포트가 살아있을때 중지 시키는법 (0) | 2022.05.17 |
[SunOS] passwd 기록 목록에 암호가 있습니다 (0) | 2022.01.07 |