캐시메모리가 꽉차서 메모리 용량이 부족한 경우
· 약 2분
파일에 접근이 빈번한 시스템에서 메모리 용량을 확인시
## 메모리 용량 확인
$ free -m
캐시메모리의 점유율이 꽉찰 정도로 높게 나타나 메모리 용량이 부족한 걸 확인할 수 있다.
원인
리눅스는 물리적인 저장/통신 장치와 데이터를 주고 받을 때 메모리에 먼저 적재한 후에 데이 터를 주고 받는다. 이는 동일한 데이터에 대한 접근을 할 경우 메모리에서 바로 가져오도록 하여 I/O 성능을 높이기 위함이다.
해결
vfs_cache_pressure
시스템 설정 파일을 열어 디렉토리와 inode 오브젝트에 대한 캐시로 사용된 메모리를 반환하는 정도를 지정하는 vfs_cache_pressure 파라미터를 수정해준다.
$ vi /etc/sysctl.conf
## 기본값은 100
vm.vfs_cache_pressure = 10000
cache memory drop
캐시메모리를 주기적으로 비워주자
$ crontab -e
## 매일 새벽 4시에 캐시메모리 강제비우기
0 4 * * * sync && echo 3 > /proc/sys/vm/drop_caches
sync 명령어로 캐시메모리에 담긴 데이터를 실제 저장장치에 반영해주고, drop_caches를 실행한다. 커맨드로 실행시에 메모리를 반환하면서 서버가 잠시 멈출 수 있으니 새벽에 실행을 걸어놓자
- echo 1 : page cache 해제
- echo 2 : inode, dentry cache 해제
- echo 3 : 모두 해제