memcachedを複数起動する(メモ)

1サーバで扱うデータの中に、なるべく消えて欲しくないセッション情報などのデータと、限界が来たら順次消えて行って良いページ情報などのデータが同居していて、どうもキャッシュ漏れ→セッション切れが頻繁に起きているようなので、複数プロセスを立ち上げて管理を別にすることにした。[*1]


本来は1つのコマンドで複数のプロセスを立ち上げるように、initファイルを変更すべきで、実際そういうアイディアもいくつか落ちているんだけど、正直に告白すると読んでもあんまりよく分からなかったので素直に複数のinitファイルを用意した。

参考

Running Multiple MemCache Instances | spf13.com


手順は以下。

1. 設定ファイルをコピー

cp /etc/sysconfig/memcached /etc/sysconfig/memcached_2


2. 設定ファイルを変更

特に、PORTの変更は必須。
デフォルトは11211だと思うので、それ以外の数字に。11212が無難か。


3. initファイルをコピー

cp /etc/init.d/memcached /etc/init./memcached_2


4. initファイルを変更

SYSCONFIG、progを変更。PORTも念のため変更。

progはmemcachedになってると思うので、それ以外の名前に。memcached_2とか。これをmemcachedのままにしておくと、start、stopが上手く動かない。


5. memcachedのシンボリックリンクを作成

ln -s /usr/bin/memcached /usr/bin/memcached_2
4で設定したprog名でmemcachedのシンボリックリンクを作成する。


6. 起動

sudo /etc/init.d/memcached start
sudo /etc/init.d/memcached_2 start
既に起動している場合は再起動で。



正直、全く美しくないけど、3プロセス以上にする予定は今のところないので、「2プロセス動いてるよ」ってことだけ共有出来てれば良いかと…思うんだけど手抜きだろうか。こういうとき、プログラマの常識を知らない自分としては、恐らく的外れなんだろうなと不安なのだけどまぁ仕方ない。

とりあえずこれで行ってみる。



[*1] 理想の話を言えば、セッション情報はAPサーバ内のローカルmemcachedで管理し、その他の情報については別途サーバを立てるべきなのかも知れないけれども、サーバを増やせないのでこういうことに。