10x schnellerer Memcache mit libmemcached 0

Posted by fwoeck
on Tuesday, March 17

Seit einiger Zeit gibt es eine in C geschriebene Memcached-Library, die deutlich schneller funktionieren soll, als z. B. die native Anbindung in Rails. Da bei der Migration nach Rails 2.3 ohnehin ein paar Fehler bei der Standardanbindung aufgetreten sind, war das ein guter Zeitpunkt für mich, die Alternative zu testen.

Leider ließen sich die aktuellen Versionen (März 2009) nicht zusammen kompilieren, und so musste ich auf etwas ältere zurückgreifen, die nun aber fluppen. Benötigt werden die libmemcached, das libmemcached_store-Plugin, das den Defaultmechanismus in Rails ersetzt und etwas Konfiguration:

Setup

wget http://blog.evanweaver.com/files/libmemcached-0.25.14.tar.gz

tar -xzvf libmemcached-0.25.14.tar.gz

cd libmemcached-0.25.14

./configure && make && make install

wget http://blog.evanweaver.com/files/memcached-0.13.gem

gem install memcached-0.13.gem

Das Plugin:

script/plugin install git://github.com/cheald/libmemcached_store.git

Konfiguration

Zumindest muss das Plugin in der environment.rb aktiviert werden:


config.cache_store = :libmemcached_store

Wer es etwas ausgefallener möchte, kann für Sessions und Fragmente separate Server ansprechen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
GENERAL_CACHE_SERVERS = ["localhost:11211"]
GENERAL_CACHE_OPTIONS = {:untaint => true}
SESSION_CACHE_SERVERS = ["localhost:11211"]
SESSION_CACHE_OPTIONS = { :prefix_key => "session:marsxpress" }
SESSION_MEMCACHE_CLIENT = Memcached.new(SESSION_CACHE_SERVERS, 
    SESSION_CACHE_OPTIONS)

config.cache_store = :libmemcached_store, GENERAL_CACHE_SERVERS, 
    GENERAL_CACHE_OPTIONS
config.action_controller.session_store = :libmemcached_store
config.action_controller.session = {
    :cache => SESSION_MEMCACHE_CLIENT,
      :expires_after => 86400
}

andere Funktionen

Das libmemcached-Paket bringt einige Tools mit, mit deren Hilfe man sich die Betriebstemperatur seiner Cachingserver ansehen kann:

  • memcat – Copy the value of a key to standard output
  • memflush – Flush the contents of your servers
  • memrm – Remove a key(s) from the serrver
  • memcp – Copy files to a memached server
  • memstat – Dump the stats of your servers to standard output
  • memslap – Generate testing loads on a memcached cluster

Weblinks

  1. github.com/cheald/libmemcached_store
  2. tangent.org/552/libmemcached.html
  3. blog.evanweaver.com
Comments

Leave a response

Comment