결론적으로 현재 상황을 정리하면 docker 환경의 메모리 증가에 대해 난감해 졌다.
이슈 시작을 간단히 설명하면,
기존에 사용하던 docker에 kernel 에러가 발생해서 중단하고 host에 tomcat서버를 설치하여 사용하고 있었다.
기능상 당장 큰 문제가 없기 때문에 크게 신경쓰지 않고 있었는데 어느날 확인해 보니 메모리 사용량이 급증해 있었다.
아무 계획없이 확인했던 것인데 더 방치 했다면 아마도 50%를 바라봤을지도 모르겠다.
docker를 사용할 당시 컨테이너 3개가 돌아가고 있었고, 많아 봐야 메모리 사용량은 20% 정도였다.
당시와 비교해도 특별한 소스 변동이 없었기 때문에 이 그래프의 흐름은 내게 메모리 관리가 별도로 필요성을 느끼게 했다.
그래서 ubuntu의 메모리 사용량 관리에 대한 내용을 찾아서 스케줄로 등록했다.
참고정보 : https://oopaque.tistory.com/119
그리고 결과는 위 30일 그래프의 우측 부분이다.
스케줄 추가 전과 비교하면 증가폭이 둔화되긴 했지만 여전히 조금씩 증가하고 있었다.
이후 좀 흥미로운게 있었는데 docker를 사용하게 되면서 부터다.
어찌어찌 kernel 문제가 해결(?) 되어서 다시 docker를 사용하게 되었다.
아래는 도커 사용 전후다.
환경의 차이는 아래와 같다.
docker 사용 전 | docker 사용 후 | |
공통점 특이점 | host에서 메모리 관리 스케줄 적용 | |
차이점 | tomcat 서버 1개만 운영(prod) | 총 3개의 컨테이너 운영중 prod : docker 사용전 작업을 모두 수행 dev : 단순 test용 docker 관리를 위한 컨테이너 |
이러한 차이라면 오히려 docker를 사용한 후 메모리 사용량이 더 늘어야 하는게 아닌가?
오히려 최저 사용량은 docker 사용 후에가 더 낮다.
그리고 3일간 모니터링 한 결과 조금씩 메모리 사용량이 증가하고 있다.
구글을 검색해봐도 docker가 메모리 관리를 아주 잘 하는것 같지는 않은데 말이다. 흠 =ㄴ=ㅋ
docker 사용 6일 후 현재
역시 구글 검색 결과가 맞는 모양이다.
아쉽게도 메모리 사용량은 점차 증가하고 있으며, 특정 머신시간(19~20시)에 대략 3%씩 증가하고 있다.
주기적으로 관리해 줄 방법 없나?