'Memory'에 해당하는 글 2건

commit_memory failed

Daily/Prog 2017. 5. 17. 23:08

톰캣 재부팅 실패. STOP 실패. 시작할 때 실패는 많이 해봤어도 중지하는데 실패하는 건 처음;

catalina.out 파일를 보았다.


OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000caf500007158497280) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 715849728 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/jvm-8091/hs_error.log
cs


메모리가 부족하여 JRE 를 계속 진행할 수 없다는...

/tmp/jvm-8091/hs_error.log 파일을 보니 머가 머라머라 쥘쥘 많다.

암튼 Out of memory.



원인


- 시스템의 물리적 RAM 또는 스왑 공간이 부족.

- 프로세스 크기 제한에 도달.



해결 방법


- 시스템의 메모리 로드 줄이기.

- 물리적 메모리 또는 스왑 공간 늘리기.

- 스왑 백킹 저장소가 가득 차 있는지 확인.

- 64 비트 OS에서 64 비트 Java 사용.

- Java 힙 크기 줄이기 (-Xmx / -Xms).

- Java 스레드 수 줄이기

- Java 스레드 스택 크기 줄이기 (-Xss)

- -XX:ReservedCodeCacheSize= 를 사용하여 더 큰 코드 캐시 설정


위에서 아무것도 수정할 수 없다면!


# echo 1 > /proc/sys/vm/overcommit_memory
cs


overcommit_memory 를 일시적으로 1로 설정하여 커널의 memory overcommit 처리를 수행하지 않도록 수정한다.

기본값은 0으로, 커널이 사용 가능한 메모리 양을 추정하고 잘못된 요청을 실패시켜 휴리스틱 메모리 오버커밋 처리를 수행하지만, 메모리가 오버로드될 수 있다.

관리자 권한으로 해야 한다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

docker 설치 후 docker info 를 확인하자 마자 보이는 경고.


WARNING: No swap limit support


에러를 안나타나게 하려면, 시스템에서 cgroup 에 메모리와 스왑 메모리 관리를 사용할 수 있게 하면 된다.

메모리와 스왑 메모리를 사용 가능하게 하면 Docker 를 사용하지 않을 때도 메모리 오버헤드(약 1%), 성능 저하(약 10%)를 유발한다.

GNU GRUB(GRand Unified Bootloader)을 수정하여 cgroup 에 메모리와 스왑메모리를 가능하게 할 수 있다.


# vi /etc/default/grub

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"


변경된 GRUB 을 적용하고 재부팅한다.


# update-grub

Generating grub configuration file ...

Found linux image: /boot/vmlinuz-3.13.0-74-generic

Found initrd image: /boot/initrd.img-3.13.0-74-generic

done


# shutdown -r now



여기까지가 문서에 있는 얘기고...

현재 커널이 cgroup swap 메모리 제한을 하고 있지 않다는 것인데.

이것을 가능하게 세팅하고 나면 성능 저하가 생긴다는게 말인가 방구인가.

Docker 를 위해서 시스템의 성능을 저하시킨하는게 말인가 방구인가.

Docker 돌리는데는 이러나 저러나 지장은 없지만 이게 무슨 말인지 정말 궁금하긴 하다.

이것때매 cgroup 까지 찾아보기는 좀...ㅜ



WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret