1 서론
2 memcached의 캐쉬 방식
3 memcache의 인스톨
4 memcache의 기동
5 memcache의 동작확인
서론
memcached는 고속의 분산형 Memory Cache이며, 주로 DB에의 참조 결과를 Cache, 웹시스템에 있어서의 성능향상을 위해 많이 사용된다.
- 웹시스템에 있어서의 부하대책
- 서버의 구성을 살펴본다.
- Scale Out (서버의 수를 늘린다)
- Scale Up (CPU/Memory 등의 하드웨어를 향상시킨다)
- OS/Middleware의 설정을 살펴본다.
- 네트워크구성을 살펴본다.
- 어플리케이션 로직을 살펴본다.
- 서버의 구성을 살펴본다.
- 위의 대책 중에 DB서버에의 대책에는 데이터의 배치, 데이터 액세스방법을 어떻게 구현했는지가 문제가 된다.
- DB서버에의 부하를분산 (DB파티션팅 등의 기술을 사용해 Scale Out)
- DB서버에 있어서의 쓸때없는 처리를 줄인다. (DB Query를 다시 살펴본다)
바로 memcache가 위의 문제가 될 수 있는 곳의 해결책이 될 수 있을 것 같다.
- memcached에 의한 성능향상
- 파일 입출력 (File I/O)가 줄어듬
- 파일의 내용을 캐쉬해 둠으로써 파일 입출력에 의한 부하가 줄어든다.
- 세션정보의 공유
- 유져의 세션정보를 캐쉬해 둠으로써, 복수의 아팟치서버사이의 세션정보를 공유한다.
- 파일 입출력 (File I/O)가 줄어듬
memcached의 캐쉬 방식
- 분산형
memcache서버 자체에는 분산장치을 가지고 있지않다. 하지만 memcache의 클라이언트 라이브러리가 존재하며, 분산장치는 이를 이용해 클라이언트에서 구현해 주면 된다.
- 휘발성
memcache는 onmemory 캐쉬서버이므로 데이터를 계속적으로 가지고 있지 못한다. 프로세스가 종료되면 데이터도 모두 없어진다.
- 키와 값의 매핑
memcache는 hashmap처럼 키와 값의 매핑정보를 보유한다. 키는 250문자까지 공백을 포함하지 않는 텍스트로 지정하고, 값은 1MB 까지의 임의의 데이터를 입력할 수 있다.
- LRU 와 유효기간에 의한 캐쉬소거
memcache의 캐쉬데이터의 소거 방식은 LRU(Least Recently Used)이다. 즉 캐쉬에 빈자리가 없을 경우는 가장 오래된 순으로 소거된다. 하지만 키별로 유효기간을 정할 수 있으므로 소거 정책을 정할 수 있다.
memcache의 인스톨
* 선행으로 인스톨 되어야 할 라이브러리 : libevent
# wget http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz
# tar xvfz libevent-1.4.8-stable.tar.gz
# cd libevent-1.4.8-stable
# ./configure
# make
# make install
* memcached의 인스톨
# wget http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
# tar xvfz memcached-1.2.6.tar.gz
# cd memcached-1.2.6
# ./configure
# make
# make install
memcache의 기동
* -vv (very verbose) 옵션과 함께 기동, -p 포트, -u root로 실행
# memcached -vv -p 11211 -u root &
sh-3.2# memcached -vv -p 11211 -u root
slab class 1: chunk size 88 perslab 11915
slab class 2: chunk size 112 perslab 9362
slab class 3: chunk size 144 perslab 7281
slab class 4: chunk size 184 perslab 5698
..중략..
slab class 38: chunk size 391224 perslab 2
slab class 39: chunk size 489032 perslab 2
<4 server listening
<5 server listening
<6 send buffer was 9216, now 7456540
<6 server listening (udp)
* -p 옵션으로 복수의 프로세스를 실행 시킬 수 있으며, -d 옵션으로 백그라운드 기동이 가능.
# memcached -p 11211 -d -u root
# memcached -p 11212 -d -u root
# memcached -p 11213 -d -u root
memcache의 동작확인
* 접속확인
# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
* 상태확인 (telnet 상태에서)
stats
STAT pid 13041
STAT uptime 171
STAT time 1225958288
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 0.001480
STAT rusage_system 0.002299
STAT curr_items 0
STAT total_items 0
STAT bytes 0
STAT curr_connections 3
STAT total_connections 4
STAT connection_structures 4
STAT cmd_get 0
STAT cmd_set 0
STAT get_hits 0
STAT get_misses 0
STAT evictions 0
STAT bytes_read 7
STAT bytes_written 0
STAT limit_maxbytes 67108864
STAT threads 1
END
* get/set 동작확인 (telnet 상태에서)
set key1 0 0 6
Hello!
STORED
get key1
VALUE key1 0 6
Hello!
END
'OS > LINUX' 카테고리의 다른 글
chkconfig (0) | 2011.06.21 |
---|---|
사용자 프로그램 부팅시 자동 실행 (0) | 2011.06.21 |
mutt 커맨드라인 첨부 메일 보내기 (0) | 2011.06.17 |
/etc/sysconfig / 시스템 설정 정보 (0) | 2011.06.16 |
IPTABLES 사용법 예제로 정리 (0) | 2011.06.16 |