twemcache

scribbling 2012. 7. 17. 10:51

 

 

http://engineering.twitter.com/2012/07/caching-with-twemcache.html

 

 

트위터에서 memcached 1.4.4 버전을 기반으로 만든 twemcache(https://github.com/twitter/twemcache)를 오픈했다.

 

mysql을 사용하는 twitter에 맞게 최적화되어 있다.

  • as an optimization for disk where cache is used as the in-memory serving layer to shed load from databases.
  • as an optimization for cpu where cache is used as a buffer to store items that are expensive to recompute.

 

특정 User로 인해서 mysql의 부하가 많이 심하게 높아서 고민했던 트위터가 결국 캐쉬를 도입할 수 없었던 것으로 보인다.

 

기존의 memcached가 도입했던 slab allocation의 단점을 random eviction으로 해결했다.

(memory compaction 하면서 더 이상 cache 저장을 못해서 실패하는 경우를 회피하는 방법이 없어서 재시작하는 작업을 했었다. 그러나, twitter에서는 이 부분을 쉽게 해결하기 위해서 그냥 slab 하나를 빼서, 새로운 캐쉬를 slab에 넣는 코드로 변경한듯)

 

Random eviction 데모.

http://www.youtube.com/watch?v=EtROv2or8SE&feature=youtu.be&hd=1

 

특정 tweets가 많이 사용할 때, 어떻게 사용하지 패턴을 잘 볼 수 있도록  운영을 잘 하기 위한 만든 Tool도 소개되었다. lock 없는 ring buffer로 만든 command line으로 제공되는 툴을 이용해서  비동기로 파일이나 소켓으로 dump도 할 수 있다.

Posted by '김용환'
,