리눅스 서버 cache memory 정리
June/리눅스

리눅스 서버 cache memory 정리

개요

우리의 모니터링 시스템인 zabbix에서 계속 특정 서비스에 메모리가 부족하다고
지속적인 알람이 발생하였다.

 

현황

해당 알림을 확인하고자 서버에 직접 접근하여 메모리를 조사해보았다.

free -m

위의 명령어를 사용하면 개략적인 메모리 현황을 조회할 수 있다.

보아하니 실제로 약 7G 중 사용된것은 1.4G라고 본다면,
free는 400M밖에 남지 않았다! 그리고 buff/cache 영역에 5.4G가 할당되어 있는 것을 확인하였다.

buff/cache 는 Buffers + Cached + slab 의 영역을 가리킨다.
좀 상세하게 확인해고자 한다면 아래의 명령어를 통하여 확인할 수 있다.

vi /proc/meminfo

꽤 길어서 이쯤 컷컷!

명령어로 조회하면 이렇게 실제로 어디에 얼마나 할당되었는지 확인하였다.

원인

원인은 간단하다!
프로세스가 주기적으로 메모리 청소를 하지 않기 때문에 지속적으로 쌓여서
위와 같은 문제가 발생하였던 것이다.

해결

지속적으로 캐시가 청소되지 않는다면, 직접 해주는 스케쥴링 프로그램을 만들어준다.
우선 캐시 메모리를 정리해주는 명령어를 알아본다.

출처는 하단에 표기(참조)

위에 것이 다 읽어보기 귀찮다면 아래의 명령어만 기억하자

sync && echo 3 > /proc/sys/vm/drop_caches

sync를 해주는 이유는?
만일 캐시를 주로 사용하는 DB 형태라면 저걸 지우는 순간 모든 데이터가 날라간다.
그렇기 때문에 캐시에 휘발성으로 담긴 데이터를 실제 저장 장치에 반영시키도록 해주는 것이다.

 

크론작업

이제 해당 명령어를 주기적으로 실행하며 메모리 청소하도록 도와줘 보자!
크론 사용은 인터넷을 참조한다~

참조

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0FcAa&articleno=12415077&categoryId=521567®dt=20151123102530
https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%BA%90%EC%8B%9C_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EB%B9%84%EC%9A%B0%EA%B8%B0
https://blog.lael.be/post/1090