본문 바로가기

Server Oriented/Server

리눅스 free 메모리 부족은 OS 가 잡는 cache 때문.. vm.swappiness

File I/O 가 발생할 때 해당 파일에 대하여 cache 를 리눅스가 잡는데..

한 번 잡아 놓은 캐시를 도대체가 release 하지 않고 그냥 잡고 있어서..

웹서버가 메모리 부족으로 뻗어 버리는 한심한 사태가 발생하더군요.. ㅠ.


리눅스 커널 2.6 부터는 아래와 같이 옵션 조정이 가능하답니다. ^^;

커널은 아래 명령어를 실행하면 알 수 있어요.

uname -r



1. 


http://www.hancom.com/faq.faqOpscsolutionView.do?listReset=&faqcd=007&sch_default_depth_1=007&sch_depth_1=007&sch_depth_2=000&sch_depth_3=&sch_searchKey=&sch_searchValue=&sch_searchValue2=&sch_research=&notice_gubunKey=&board_seqno=2933&boardNum=9&depth_2=000&searchValue=


sysctl으로, vm.swapiness 는 런타임시 다음과 같은 명령어들을 통해 설정될 수 있습니다.
# sysctl -w vm.swappiness=30
# echo 30 >/proc/sys/vm/swappiness
 
: Gentoo boot가 etc/sysctl.conf에서 설정될 때 기본값
# Control how much the kernel should favor swapping out applications (0-100)
vm.swappiness = 30
 
: Asianux Server 3의 기본값
# sysctl -a | grep vm.swappiness
vm.swappiness = 60




2.


리눅스 OS 에서 캐시된 메모리를 release(free) 시키려면, 아래 둘 중 하나 실행. 3으로 세팅하는 것이 맞을 듯..

실행하는 OS 사용자 아이디는 root 입니다.

sysctl -w vm.drop_caches=3

sysctl -w vm.drop_caches=0


상기 명령어를 crontab 에 넣거나 필요시에만 활용하고,

실제로 세팅은 맨 위에 링크한 곳의 내용 대로 처리..