Edited at

俺でもわかるシリーズ: memcachedの設定

More than 3 years have passed since last update.

yumでインストールされたmemcachedの設定の初期値は、おおよそ以下のようになっているはずです。


/etc/sysconfig/memcached

PORT="11211"

USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

せっかく大富豪インスタンスを使っているのだから、もっと接続できるようにして、もっとメモリを使いましょう。


/etc/sysconfig/memcached

PORT="11211"

USER="memcached"
MAXCONN="65535"
CACHESIZE="160000"
OPTIONS=""

……将来的に平民インスタンスにスケールダウンする可能性もあるので、これを決め打つのはマズいのでは?

この設定ファイルは起動スクリプトを読むと分かるのですが、ただのシェルスクリプトです。


/etc/rc.d/init.d/memcached

#! /bin/sh

#
# chkconfig: - 55 45
# description: The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached
# pidfile: /var/run/memcached/memcached.pid

## 中略

PORT=11211
USER=memcached
MAXCONN=1024
CACHESIZE=64
OPTIONS=""

if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi

## 後略


使えるメモリ量の8割を使うように書いてしまいましょう。


/etc/sysconfig/memcached

PORT="11211"

USER="memcached"
MAXCONN="65535"
TOTAL=`free -m | head -2 | tail -1 | awk '{print $2}'`
CACHESIZE="`echo "$TOTAL * 0.8" | bc | awk -F '.' '{print $1}'`"
OPTIONS=""

memcachedを再起動して、実際に適用されているか確認します。

$ sudo service memcached restart

$ free -m
total used free shared buffers cached
Mem: 7492 339 7152 0 84 102
-/+ buffers/cache: 152 7339
Swap: 0 0 0
$ ps ax | grep memcached
2525 pts/0 S+ 0:00 grep memcached
31366 ? Ssl 0:00 memcached -d -p 11211 -u memcached -m 5993 -c 65535 -P /var/run/memcached/memcached.pid

起動オプション -m の値が動的に設定されていることが確認できました。