사용자 도구

사이트 도구


memcached

memcached

분산 캐시 사용시 주의점

  • Java 직렬화 기법등을 사용할 경우, 캐시할 클래스의 필드가 달라지면 문제가 발생할 수 있으므로 클래스를 버저닝하고, 클래 버전에 따라 다른 키를 생성하거나 클래스 버전이 다르면 캐시를 안 한 것으로 간주하도록 처리해야 한다.
  • 분산 캐시는 내부 망에서의 부하를 유발한다. 대역폭 관리에 신경쓰지 않으면 사용자 폭증시에 웹서버와 DB와 캐시는 모두 CPU 점유율이 낮은데도 불구하고 내부망 대역폭 부족으로 느려지는 상태가 될 수 있다.

설치

./configure --prefix=/usr/local/memcached
make && make test
sudo make install

설정

  • Ubuntu는 /etc/memcached.conf 파일을 /etc/memcached_server이름.conf 로 복사하여 설정하면 설정 파일 갯수만큼 서버가 뜬다.
  • -I 1m : 아이템당 메모리 크기를 1mb 로 지정
  • -m 2048 : 전체 캐시 사이즈를 2048m으로 지정한다. 이 크기는 운영체제가 차지하는 메모리 용량을 염두에 두고 스왑을 사용하지 않고서 사용할 수 있도록 지정해야 한다.
  • 가장 기본적인 형태
    memcached -p 27012 -m 2048 -d -P /tmp/memcached.pid
  • -t [Core갯수] : 쓰레드 갯수를 지정한다. 기본값은 4이며, 해당 장비의 CPU Core 갯수보다 같거나 작게 설정한다. CPU Core 수 보다 많으면 오히려 성능이 떨어진다.

memcached 장시간 사용시 Wasted Memory 증가현상

Linux Memory Swap 방지

Linux Performance

$ sudo vi /etc/sysctl.conf
vm.swappiness = 0
 
$ sudo sysctl vm.swappiness=0

Telnet 접속

CAS(Compare|Check and Set)

extstore - 외부 데이터 저장소

Java Client 구현체

Version 알아내기

운영중인 Memcached의 버전을 알아내려면 Telnet으로 접속하여 version 명령을 내리면 된다.

telnet hostname port
version

SASL Authentication

Ubuntu memcached/sasl

sudo apt-get install sasl2-bin
sudo saslpasswd2 -a memcached -c [사용자명] # 이후 비밀번호 지정
sudo usermod -a -G sasl memcache
sudo usermod -a -G sasl memcache # memcache 사용자를 sasl 그룹에 추가해야 ''/etc/sasldb2'' 읽기 가능
sudo usermod -g sasl memcache # primary group 으로 변경
sudo su - memcache # memcache 사용자의 group 정보 갱신. 이걸 안하면 reboot 필요
  • memcached 실행 옵션에 -S 추가하고 재시작
  • 접속시 꼭 Binary 프로토콜로 접속해야 한다.

Expired Item

Memcached는 아이템이 expire 되더라도 메모리에서 삭제하지 않으며, 새로운 데이터 요청이 들어왔을 때 이미 expire 된 아이템을 대체하는 방식으로 작동한다. lru - How does the lazy expiration mechanism in memcached operate?

So expired items are only purged when a get request is sent for the expired item or the expired item is cleared because the storage is needed.

libmemcached

관리툴

참조

memcached.txt · 마지막으로 수정됨: 2019/09/27 13:03 저자 kwon37xi