性能の壁にぶつかったとき、SQLの改善では満足できないと、
ついついキャッシュに頼りたくなりますよね。
まるで酒に依存する亭主のよう。
「え~い、キャッシュだ!キャッシュ!memcachedもってこ~い!!」
なんてやりとりがあったりなかったり。
というわけで、亭主の暴力に耐えながらmemcachedを始めるわけです。あれ?なんか違うか。
今回はとりあえずインストールをしますよ。
インストール
参考URL(※後述)によると、libeventとmemcachedをmake installすれば良いらしいっス。
ファイルはこれ使います。
http://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
# cd /usr/local/src
# wget --no-check-certificate http://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
# tar zxvf libevent-2.0.20-stable.tar.gz
# cd libevent-2.0.20-stable
# ./configure
# make
# make install
memcachedにはlibeventってのが必要らしいのでまずこれを入れます。
# cd /usr/local/src
# wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
# tar zxvf memcached-1.4.15.tar.gz
# cd memcached-1.4.15
# ./configure
# make
# make install
つぎにmemcachedいれました。
# cp /usr/local/src/memcached-1.4.15/script/memcached.sysv /etc/rc.d/init.d/memcached
# chkconfig --add memcached
# chkconfig --list memcached
起動スクリプトの設定だそうです。(よくわかってない)
# /etc/rc.d/init.d/memcached start
memcached を起動中: chown: cannot access `/var/run/memcached': そのようなファイルやディレクトリはありません
/bin/bash: memcached: command not found
[失敗]
# mkdir /var/run/memcached
起動してみたらエラー。
無いと言われたディレクトリを作ってあげます。
# memcached
memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
# echo "/usr/local/lib/" > /etc/ld.so.conf.d/libevent.conf
# ldconfig
試しに実行してみるもエラー。
ldconfigする(共有ライブラリを認識させる)必要があるらしいです。
# /etc/rc.d/init.d/memcached start
memcached を起動中: /bin/bash: memcached: command not found
[失敗]
まだ失敗する。そんなコマンドないよって?
# which memcached
/usr/local/bin/memcached
あるっぽいけど。。。
よくわからなかったので、起動スクリプトを編集してみた。
vi /etc/rc.d/init.d/memcached
daemon memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS
↓
daemon /usr/local/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS
↓
daemon /usr/local/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS
# /etc/rc.d/init.d/memcached start
memcached を起動中: [ OK ]
動いた!
# telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
stats
STAT pid 26309
STAT uptime 76
STAT time 1352468374
STAT version 1.4.15
STAT libevent 2.0.20-stable
STAT pointer_size 64
STAT rusage_user 0.000000
STAT rusage_system 0.003999
STAT curr_connections 10
STAT total_connections 11
STAT connection_structures 11
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 7
STAT bytes_written 0
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
END
^]
telnet> quit
Connection closed.
動いたよー!!よっしゃー!!!!
続きはまた次回。