도커만 봤을 때는.. 메모리 설정 안 해도 된다. 일반적인 도커 메모리 설정은 unlimited이다.


$ cat /sys/fs/cgroup/memory/system.slice/docker.service/memory.stat

hierarchical_memory_limit 9223372036854771712

hierarchical_memsw_limit 9223372036854771712


그런데, 왜 도커 메모리로 인해 도커가 죽는 일이 발생하기도 한다. 


바로 그것은 도커 메모리가 이슈가 아니라 도커 컨테이너의 애플리케이션이 이슈인 경우가 있다.



예를 들면,



다만, 일래스틱서치는 mmapfs를 사용하기에 vm 메모리 설정을 해야 한다. mmap은 매핑된 파일의 크기와 동일한 프로세스에서 사용 가능한 가상 메모리 주소 공간의 일부를 사용하는 형태이다(루씬의 MMapDirectory를 사용) 


그래서 운영체제 캐시 없이 바로 루신 인덱스에서 파일을 읽으면 빠르기 때문인데요. 이게 도커에 미치는 영향이다.



참고 자료


https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html


http://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html


http://jprante.github.io/lessons/2012/07/26/Mmap-with-Lucene.html

Posted by 김용환 '김용환'

댓글을 달아 주세요