안녕하세요!
초보 개발자 슈브로포입니다.
저는 서버 OS로 Ubuntu 18.04LTS를 주로 사용합니다. 익숙해서 그런지 Centos는 어색하더라고요 :)
AWS에서 Ubuntu AMI를 선택하여 EC2를 생성하여 사용하다 보면 참 편리하고 좋습니다!
하지만 EC2를 사용하면 매달 청구되는 비용을 보면서 속이 쓰릴 때가 많습니다.
"인스턴스 유형을 한 단계만 내려도 비용이 반으로 줄겠는데..." 하고 말이죠.
제가 인스턴스 유형을 선택하는 기준은 Mem입니다.
제가 만들어 실행하는 파이썬, 자바 애플리케이션이 CPU보다는 Mem을 더 필요로 하기 때문이죠.
Ubuntu에 ssh로 접속 후 메모리 사용량을 확인할 때는 "top" 커맨드를 많이 사용합니다.
그러면 아래와 같은 화면이 보여집니다.
top - 12:14:22 up 24 min, 1 user, load average: 0.08, 0.15, 0.11
Tasks: 159 total, 1 running, 116 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.2 us, 0.3 sy, 0.0 ni, 97.4 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 2002792 total, 1029376 free, 552388 used, 421028 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1286224 avail Mem
KiB Mem이 표시되는 줄을 보시면 total, free, used, buff/cache 영역이 있습니다. (해당 인스턴스 유형은 t3a.small입니다.)
각 영역을 간단하게 설명하면 아래와 같습니다.
- total: 해당 인스턴스가 사용할 수 있는 메모리의 총량
- free: 사용 가능한 메모리
- used: 사용 중인 메모리
- buff/cache: 버퍼, 캐쉬된 메모리
사용량을 줄이기 위해서는 buff/cache에서 사용 중인 메모리를 클리어 하는 방법 밖에는 없어 보였습니다.
스택익스체인지를 찾아보던 중 buffer와 cache에 대한 설명이 있어 인용을 하면 아래와 같습니다.
buffers
- Memory used by kernel buffers (Buffers in /proc/meminfo)
cache
- Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)
buff/cache
- Sum of buffers and cache
자 그러면 어떻게 buff/cache 클리어 할까요?
저는 아래와 같은 스크립트가 작성된 .sh파일을 크론탭에 5분마다 수행되도록 설정하여 buff/cache 메모리를 클리어합니다.
#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 1 > /proc/sys/vm/drop_caches"
sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
물론 buff/cache의 사용량이 0이 되는 것은 아니며, 미 사용되거나 오래된 메모리를 클리어 하는 것으로 보입니다.
이렇게 불필요한 메모리가 누적되는 것을 방지하여 인스턴스 유형을 내릴 수 있었습니다.
이상으로 부족한 포스팅을 마치겠습니다.
조금이나마 도움이 되었다면 좋아요 눌러주시면 감사하겠습니다.
참고 URL
'[개발] Infrastructure > Linux' 카테고리의 다른 글
[Linux] 디렉터리에 특정 단어를 포함하는 파일 찾기 (0) | 2021.08.17 |
---|---|
[Linux] 로그 파일의 내용을 truncate 명령어로 삭제하기. (0) | 2021.08.03 |
Apache httpd를 사용하여 Multiple VirtualHost 다루기 (0) | 2021.08.02 |
로컬에서 리눅스에 파일을 업/다운로드 할 수 있는 scp 명령어에 대해 알아보자 (0) | 2021.07.09 |
Ubuntu Server Settings (0) | 2020.07.01 |