memcached (概要 & インストール)
Debian etchにmemcachedを導入した時の作業メモ。(概要&インストール編)
memcachedとは
C言語で書かれた高速なネットワーク対応の分散メモリキャッシュサーバ。
memcached - a distributed memory object caching system
memcachedのインストール
memcachedは、イベントハンドリングにlibeventを利用するので、libeventをインストールします。
$ sudo aptitude install libevent1 libevent-dev
次にmemcachedをインストールしますが、etchのパッケージはバージョンが古い*1ので、ソースからインストールします。
最新版は、こちらからダウンロードします。
$ wget http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz $ gzip -dc memcached-1.2.6.tar.gz | tar xvf - $ cd memcached-1.2.6 $ ./configure $ make $ sudo make install
memcachedの起動
(フォアグラウンド) $ memcached -p 11211 -m 64m -vv (バックグラウンド(デーモン化)) $ memcached -p 11211 -m 64m -d
(主なオプション)
- -p
TCP port number to listen on (default: 11211) - -d run as a daemon
- -u
assume identity of (only when run as root) - -m
max memory to use for items in megabytes, default is 64 MB - -M return error on memory exhausted (rather than removing items)
- -c
max simultaneous connections, default is 1024 - -v verbose (print errors/warnings while in event loop)
- -vv very verbose (also print client commands/reponses)
- -f
chunk size growth factor, default 1.25
telnetで接続確認。
$ telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. stats STAT pid 2261 STAT uptime 17 STAT time 1224362708 STAT version 1.2.6 STAT pointer_size 32 STAT rusage_user 0.004000 STAT rusage_system 0.020001 STAT curr_items 0 STAT total_items 0 STAT bytes 0 STAT curr_connections 2 STAT total_connections 3 STAT connection_structures 3 STAT cmd_get 0 STAT cmd_set 0 STAT get_hits 0 STAT get_misses 0 STAT evictions 0 STAT bytes_read 7 STAT bytes_written 0 STAT limit_maxbytes 67108864 STAT threads 1 END version VERSION 1.2.6 quit Connection closed by foreign host.
daemontoolsによるmemcachedの起動
memcached 1.2.5で、プロセスが落ちる事象があったようなので、daemontoolsで起動・監視を行います。
まずは、daemontoolsのインストールします。
$ sudo aptitude install daemontools-installer $ sudo build-daemontools Enter a directory where you would like to do this [/tmp/daemontools] Which format would you like to use? [fD] Do you want to remove all files in /tmp/daemontools, except daemontools_0.76-9_i386.deb now? [Yn] Do you want to install daemontools_0.76-9_i386.deb now? [Yn] Do you want to purge daemontools-installer now? [yN] Good luck!
/etc/inittabにsvscanbootの自動起動スクリプトが追記されます。
### /etc/inittab ### SV:123456:respawn:/command/svscanboot
(ディレクトリ作成) # mkdir /var/daemontools/memcached # mkdir /var/daemontools/memcached/log # mkdir /var/daemontools/memcached/log/main # ln -s /var/daemontools/memcached /service (起動スクリプト) ### /var/daemontools/memcached/run ### #!/bin/sh PORT=11211 USER=nobody MAXCONN=1024 CACHESIZE=64 GROWTHFACT=1.25 OPTIONS="" exec 2>&1 exec /usr/local/bin/memcached -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -f $GROWTHFACT $OPTIONS ### /var/daemontools/memcached/log/run ### #!/bin/sh exec 2>&1 exec /usr/local/bin/multilog t ./main (実行権限付与) # chmod +x /var/daemontools/memcached/run # chmod +x /var/daemontools/memcached/log/run
*1:1.1.12