How to delete remove clear cache memory on AWS ubuntu server ?
AWS 서버에서 CACHE Memory 관리하기
AWS 서버에서 캐시를 주기적으로 삭제해주지 않으면
서버가 킬 당하는 참사가 발생한다.
프리티어로 운영중인 서버라면 30GB에 1GB 메모리 서버를
할당받게 되는데, 조금만 무거운 프로그램을 돌리게 되면
서버가 부하를 견디지 못하고 뻗어버린다. 클라이언트들이
서버에 접속을 하지 못하게 되고 서비스의 신뢰도가 떨어지게
되는 연속적인 참사가 발생한다.
이를 방지하기 위해서 주기적으로 CRONTAB에 서버 캐시 메모리를
삭제해주는 로직을 넣어야 하는것을 필수다. AWS 우분투 서버에서
캐시메모리를 삭제하는 방법은 3가지 정도다.
1. PAGE CACHE 삭제 명령어
page cache란?
파일의 입출력을 위해 마련된 메모리 영역이다.
파일 I/O 작업하는 경우 파일의 내용을 저장하는
영역이라고 쉽게 볼 수 있다. paging 기법을
도입한 메모리 영역으로 파일 입출력 속도 향상에
기여한다.
$ echo 1 > /proc/sys/vm/drop_caches
2. dentry && inode CACHE Memory 삭제 명령어
dentry란 directory entry의 약자다. File Directory에서
각각의 폴더와 파일을 지칭한다. 리눅스에서 dentry cache를
사용해서 파일을 읽어들일 때 사용하는 경로 데이터를
저장해서 파일 입출력 속도를 높인다.
dentry는 inode를 사용한다. File Directory의 경로데이터와
네임 데이터를 저장하는 곳이 inode 자료구조다. 파일 데이터라고
하면 경로데이터와 경로 이름, 권한정보, 생성 일자 등을 담고
있는 CACHE 메모리라고 볼 수 있다.
$ echo 2 > /proc/sys/vm/drop_caches
3. PAGE + dentry&inode CACHE 모두 삭제
만약 page cache와 dentry$inode cache 모두
삭제해야 하는 경우에는 다음 명령어를 사용한다.
$ echo 3 > /proc/sys/vm/drop_caches
권한문제 발생
서버 메모리를 확보하기 위해서 정상적으로 CRONTAB에
명령어를 추가해줘야 한다. crontab이 돌아가면서 권한을
얻지 못해 명령어를 실행하지 못하는 경우가 발생한다.
보통 CRONTAB을 사용자계정으로 실행하는 경우도 그렇지만,
CACHE를 삭제하는 명령어들은 Root 계정을 통해서 실행한다.
일반 사용자 계정에서 적용하는 CRONTAB에서는 작동하지
않는다.
일반 계정에서 sudo 명령어를 붙여서 실행해도 권한 실패가
나오는 경우가 있다. 이런 경우는 사용자를 Root 계정으로
변경해서 명령어를 실행해줘야 한다.
bash: /proc/sys/vm/drop_caches: Permission denied
AWS 우분투 리눅스에서 Root 권한 얻는 방법
Root 사용자로 변경
$ sudo su
Root 사용자 비밀번호 생성하기
$ passwd root
Root 사용자 비밀번호 삭제하기
$ passwd -d root
다시 일반 유저로 전환하는 명령
$ su "username"
Root 계정으로 전환 후, CACHE Memory를 삭제하면
정상적으로 삭제가 된다. 무거운 프로그램을 CRONTAB에
등록하는 경우 주기적으로 CACHE Memory를 삭제해서
서버 컴퓨터의 리소스 관리를 효율적으로 해줘야 된다.
서버가 터지면 일이 많아진다..
댓글