SlideShare una empresa de Scribd logo
1 de 14
about MEMCACHED


        afool
     Kim Sinhyub
    sinhyub@gmail.com
1_ memcached 가 뭔가요?




 (항상)

 메모리에 올라가 있는 map
 (Key – Value) dictionary

 map : Key-Value pair를 가지는 자료구조. dictionary 등으로도 불려요.
        Key를 사용하여 Value 를 빠르게 찾아 주는 특징을 가집니다.
 (항상)메모리에 올라가 있는 것은 아니구요. 물리적 메모리를 넘어선 만큼을
  memcached에 할당하면, 당연히 하드디스크로 virtual memory 페이징이 일어나게
  됩니다.
2_ memcached 를 왜 사용하나요? _ 메모리 레벨 캐싱




 (손쉽게)
 메모리 레벨에서
 원하는 값을 캐싱할 수 있음!

 캐싱 : 자원을 읽고 쓰는 작업에서, 성능 향상을 목적으로
       자원을 (접근 속도가 더 빠른) 다른 차원의 저장소에 저장해 두고
       자원에 대한 요청이 왔을 때 빠르게 반환해 주는 방법.
2_ memcached 를 왜 사용하나요? _ 메모리 레벨 캐싱

           GET 556 NAME

                           (Memory)
                                                 (Disk)
            (김개똥)
Contents
 Server    GET 555 NAME
                          memcached
                                                 DB
            (박주영)




1. Memory Access Time     <<< Disk Access Time
2. 자주 찾는 데이터일 수록 memcached레벨에서 처리 가능

* memcached 는 LRU order로 자원을 삭제함
2_ memcached 를 왜 사용하나요? _ 분산 캐시 서버 구축




  메모리 캐시 서버를
   (손쉽게)
  분산하여 구축할 수 있음!
 memcached client 에서 해시 테이블을 사용하여
  해당 자원의 memcached server에 접근 할 수 있도록 지원함
 (key 값에 대한 hash값으로 해당 key-value가 저장될 memcached server를 결정하여
  데이터를 분산시켜 저장하고, key 값에 대한 value를 찾을 때에도 해당 hash값으로
  저장되어 있는 memcached server를 통해 데이터를 가져옴.)
  물론, 이러한 내부적인 메커니즘을 몰라도 쉽게 사용할 수 있음!
 단, 이러한 분산 메커니즘이 클라이언트 사이드에서 진행되므로 memcached client의
  버전을 꼭 동일한 것으로 사용하는 것이 좋음.
3_ memcached 사용 팁 _ install



memcached server : brew install memcached
memcached client : pip install python-memcached


memcached server : key-value map을 저장하는 저장소. 서버머신에서
구동시킬 서버 어플리케이션.
memcached client : memcached server로 요청을 보내어 원하는 key-
value값을 저장하거나 읽어올 수 있는 작업을 하는 클라이언트. 물론,
클라이언트는 각 환경마다 여러가지 버전이 존재 하니 입맛에 맞게
골라쓰면 됨!
3_ memcached 사용 팁 _ setting


 memcached 에 필요한 cpu costs는 매우 작음.
  default 4개의 thread로 동작함. 하지만 여러개의 코어가
  달린 고성능 CPU를 필요로 하지는 않음.
 셋팅 시 memcached에 할당할 메모리는 실제 머신의
  물리메모리(에 조금의 여유를 남긴)만큼만 할당하는
  것이 좋음. 메모리를 사용하여 퍼포먼스의 향상을 얻는
  것이 memcached의 기본 컨셉으로, 물리메모리를
  넘어서는 만큼의 메모리를 할당할 경우swapping(가상
  메모리 페이징)으로 오히려 성능 하락이 발생할 수
  있음.

참고자료)
http://code.google.com/p/memcached/wiki/NewHardware
3_ memcached 사용 팁 _ setting


 사용 중인 서버 머신에서, WebServer, App이 사용하지
  않아 남는 메모리만큼을 Memcached에 할당해서
  사용해도 좋음
 DB Host에 Memcached를 사용하는 것은 어리석은 짓.
  메모리를 최대한 DBMS로 주도록.




참고자료)
http://code.google.com/p/memcached/wiki/NewHardware
http://code.google.com/p/memcached/wiki/NewConfiguringServer
3_ memcached 사용 팁 _ setting


 사용하는 자원이 다 차면, LRU order로 object를 제거 .
  가장 자주(최근에)쓰이는 것들이 캐시에 남아있게됨!
  메모리 용량을 넘어서는 범위를 이터레이션하게
  된다면, 한번씩만 쓰고, 캐시에서 빠져나가게 되는
  object들로 인해 연이은 cache miss 가 일어날 수 있다.
  따라서 어플리케이션에서 날리는 쿼리를 잘 파악하여,
  매우 큰 범위(memcached capacity를 넘어서는)를
  iteration하게 되는 set에 대해서는 바로 db로부터
  retrieving받는 것이 더 낫다.


참고자료)
http://code.google.com/p/memcached/wiki/NewUserInternals
3_ memcached 사용 팁 _ 추가 라이브러리


 동기화 관련한 기능이 필요하다면 다른 녀석과 함께
  사용하라.
  ex) get + set 을 atomic하게 처리해야 하는 트랜젝션

 redis : memcached 와 같이 메모리 레벨 캐싱과 함께
  유용한 atomic operation들을 제공해 줌!
4_ memcached 얼마나 좋나요?



 (쉽게 말해서)
 (이름만 대면 알만한)
 큰 서비스에서 사용하고 있음!
4_ memcached 얼마나 좋나요?



   (쉽게 말해서)
   (이름만 대면 알만한)
  큰 서비스에서 사용하고 있음!
징가의 경우 하나의 세션마다, 세션이 유지되는 동안의 유저 플레이
데이터를 memcached에 저장하고, 추후에 이를 DB에 저장하는
방법으로 DB차원의 자원을 memcached를 이용하여 성능향상을
얻었다고 함!
youtube : http://video.google.com/videoplay?docid=-6304964351441328559
Facebook : http://www.facebook.com/note.php?note_id=39391378919&ref=mf
Zynga-farmville : http://gigaom.com/2010/06/08/how-zynga-survived-farmville/
4_ memcached 얼마나 좋나요?




 (이름만 대면 알만한)
PAS에서는 API를 주고 서비스로
제공해 주고 있음!
5_ memcached 사용 후기




는
afool프로젝트 끝나고
올려 드림

Más contenido relacionado

La actualidad más candente

AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기I Goo Lee
 
개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축정해 이
 
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱PgDay.Seoul
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석smartstudy_official
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arcNAVER D2
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.Kris Jeong
 
Webservice cache strategy
Webservice cache strategyWebservice cache strategy
Webservice cache strategyDaeMyung Kang
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구ByungJoon Lee
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other FeaturesJongJin Lee
 
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종PgDay.Seoul
 
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략KTH
 
PostgreSQL 이야기
PostgreSQL 이야기PostgreSQL 이야기
PostgreSQL 이야기I Goo Lee
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회JaM2in
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나sprdd
 
MariaDB Optimization
MariaDB OptimizationMariaDB Optimization
MariaDB OptimizationJongJin Lee
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCUBRID
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability흥배 최
 

La actualidad más candente (19)

Comet
CometComet
Comet
 
AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기
 
개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축
 
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
 
Webservice cache strategy
Webservice cache strategyWebservice cache strategy
Webservice cache strategy
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other Features
 
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
[Pgday.Seoul 2017] 5. 테드폴허브(올챙이) PostgreSQL 확장하기 - 조현종
 
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
 
PostgreSQL 이야기
PostgreSQL 이야기PostgreSQL 이야기
PostgreSQL 이야기
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나
 
MariaDB Optimization
MariaDB OptimizationMariaDB Optimization
MariaDB Optimization
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 Migration
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 

Similar a About memcached

숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인VMware Tanzu Korea
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드KwangSeob Jeong
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기sung ki choi
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략흥래 김
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차seung-hyun Park
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'sung ki choi
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개태준 문
 
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선XpressEngine
 
도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습Yeomyeong Woo
 
Windows viac cpp_15장_16장
Windows viac cpp_15장_16장Windows viac cpp_15장_16장
Windows viac cpp_15장_16장Youngkwon Lee
 
Backend Master | 2.2 Cache - Ehcache
Backend Master | 2.2 Cache - EhcacheBackend Master | 2.2 Cache - Ehcache
Backend Master | 2.2 Cache - EhcacheKyunghun Jeon
 
CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018Shengzhe Li
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
SEP Overview - 이비플러스(주)
SEP Overview - 이비플러스(주)SEP Overview - 이비플러스(주)
SEP Overview - 이비플러스(주)silverfox2580
 

Similar a About memcached (20)

숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
Cache governance
Cache governanceCache governance
Cache governance
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
 
Redis 2017
Redis 2017Redis 2017
Redis 2017
 
Redis acc 2015
Redis acc 2015Redis acc 2015
Redis acc 2015
 
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
 
도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습
 
하둡관리
하둡관리하둡관리
하둡관리
 
Windows viac cpp_15장_16장
Windows viac cpp_15장_16장Windows viac cpp_15장_16장
Windows viac cpp_15장_16장
 
Backend Master | 2.2 Cache - Ehcache
Backend Master | 2.2 Cache - EhcacheBackend Master | 2.2 Cache - Ehcache
Backend Master | 2.2 Cache - Ehcache
 
CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
SEP Overview - 이비플러스(주)
SEP Overview - 이비플러스(주)SEP Overview - 이비플러스(주)
SEP Overview - 이비플러스(주)
 

About memcached

  • 1. about MEMCACHED afool Kim Sinhyub sinhyub@gmail.com
  • 2. 1_ memcached 가 뭔가요? (항상) 메모리에 올라가 있는 map (Key – Value) dictionary  map : Key-Value pair를 가지는 자료구조. dictionary 등으로도 불려요. Key를 사용하여 Value 를 빠르게 찾아 주는 특징을 가집니다.  (항상)메모리에 올라가 있는 것은 아니구요. 물리적 메모리를 넘어선 만큼을 memcached에 할당하면, 당연히 하드디스크로 virtual memory 페이징이 일어나게 됩니다.
  • 3. 2_ memcached 를 왜 사용하나요? _ 메모리 레벨 캐싱 (손쉽게) 메모리 레벨에서 원하는 값을 캐싱할 수 있음!  캐싱 : 자원을 읽고 쓰는 작업에서, 성능 향상을 목적으로 자원을 (접근 속도가 더 빠른) 다른 차원의 저장소에 저장해 두고 자원에 대한 요청이 왔을 때 빠르게 반환해 주는 방법.
  • 4. 2_ memcached 를 왜 사용하나요? _ 메모리 레벨 캐싱 GET 556 NAME (Memory) (Disk) (김개똥) Contents Server GET 555 NAME memcached DB (박주영) 1. Memory Access Time <<< Disk Access Time 2. 자주 찾는 데이터일 수록 memcached레벨에서 처리 가능 * memcached 는 LRU order로 자원을 삭제함
  • 5. 2_ memcached 를 왜 사용하나요? _ 분산 캐시 서버 구축 메모리 캐시 서버를 (손쉽게) 분산하여 구축할 수 있음!  memcached client 에서 해시 테이블을 사용하여 해당 자원의 memcached server에 접근 할 수 있도록 지원함  (key 값에 대한 hash값으로 해당 key-value가 저장될 memcached server를 결정하여 데이터를 분산시켜 저장하고, key 값에 대한 value를 찾을 때에도 해당 hash값으로 저장되어 있는 memcached server를 통해 데이터를 가져옴.) 물론, 이러한 내부적인 메커니즘을 몰라도 쉽게 사용할 수 있음!  단, 이러한 분산 메커니즘이 클라이언트 사이드에서 진행되므로 memcached client의 버전을 꼭 동일한 것으로 사용하는 것이 좋음.
  • 6. 3_ memcached 사용 팁 _ install memcached server : brew install memcached memcached client : pip install python-memcached memcached server : key-value map을 저장하는 저장소. 서버머신에서 구동시킬 서버 어플리케이션. memcached client : memcached server로 요청을 보내어 원하는 key- value값을 저장하거나 읽어올 수 있는 작업을 하는 클라이언트. 물론, 클라이언트는 각 환경마다 여러가지 버전이 존재 하니 입맛에 맞게 골라쓰면 됨!
  • 7. 3_ memcached 사용 팁 _ setting  memcached 에 필요한 cpu costs는 매우 작음. default 4개의 thread로 동작함. 하지만 여러개의 코어가 달린 고성능 CPU를 필요로 하지는 않음.  셋팅 시 memcached에 할당할 메모리는 실제 머신의 물리메모리(에 조금의 여유를 남긴)만큼만 할당하는 것이 좋음. 메모리를 사용하여 퍼포먼스의 향상을 얻는 것이 memcached의 기본 컨셉으로, 물리메모리를 넘어서는 만큼의 메모리를 할당할 경우swapping(가상 메모리 페이징)으로 오히려 성능 하락이 발생할 수 있음. 참고자료) http://code.google.com/p/memcached/wiki/NewHardware
  • 8. 3_ memcached 사용 팁 _ setting  사용 중인 서버 머신에서, WebServer, App이 사용하지 않아 남는 메모리만큼을 Memcached에 할당해서 사용해도 좋음  DB Host에 Memcached를 사용하는 것은 어리석은 짓. 메모리를 최대한 DBMS로 주도록. 참고자료) http://code.google.com/p/memcached/wiki/NewHardware http://code.google.com/p/memcached/wiki/NewConfiguringServer
  • 9. 3_ memcached 사용 팁 _ setting  사용하는 자원이 다 차면, LRU order로 object를 제거 . 가장 자주(최근에)쓰이는 것들이 캐시에 남아있게됨! 메모리 용량을 넘어서는 범위를 이터레이션하게 된다면, 한번씩만 쓰고, 캐시에서 빠져나가게 되는 object들로 인해 연이은 cache miss 가 일어날 수 있다. 따라서 어플리케이션에서 날리는 쿼리를 잘 파악하여, 매우 큰 범위(memcached capacity를 넘어서는)를 iteration하게 되는 set에 대해서는 바로 db로부터 retrieving받는 것이 더 낫다. 참고자료) http://code.google.com/p/memcached/wiki/NewUserInternals
  • 10. 3_ memcached 사용 팁 _ 추가 라이브러리  동기화 관련한 기능이 필요하다면 다른 녀석과 함께 사용하라. ex) get + set 을 atomic하게 처리해야 하는 트랜젝션  redis : memcached 와 같이 메모리 레벨 캐싱과 함께 유용한 atomic operation들을 제공해 줌!
  • 11. 4_ memcached 얼마나 좋나요? (쉽게 말해서) (이름만 대면 알만한) 큰 서비스에서 사용하고 있음!
  • 12. 4_ memcached 얼마나 좋나요? (쉽게 말해서) (이름만 대면 알만한) 큰 서비스에서 사용하고 있음! 징가의 경우 하나의 세션마다, 세션이 유지되는 동안의 유저 플레이 데이터를 memcached에 저장하고, 추후에 이를 DB에 저장하는 방법으로 DB차원의 자원을 memcached를 이용하여 성능향상을 얻었다고 함! youtube : http://video.google.com/videoplay?docid=-6304964351441328559 Facebook : http://www.facebook.com/note.php?note_id=39391378919&ref=mf Zynga-farmville : http://gigaom.com/2010/06/08/how-zynga-survived-farmville/
  • 13. 4_ memcached 얼마나 좋나요? (이름만 대면 알만한) PAS에서는 API를 주고 서비스로 제공해 주고 있음!
  • 14. 5_ memcached 사용 후기 는 afool프로젝트 끝나고 올려 드림