「memcached」をインストールして、複数のプロセスを自動起動するようにする。

Webアプリケーションのスケーラビリティを向上させるうえで、キャッシュシステムは、とても重要な部分のひとつであり、そのへんのインフラを整備するうえで、デファクトスタンダード的な存在になっているのが、memcachedです。

使われ方としては、データベースへのアクセス回数を減らす目的等で、データベースに問い合わせた結果をキャシュ(クエリキャッシュ)させるような形で、よく使われます。

ということで、memcachedの導入についてまとめておきます。

memcachedの特徴

  • データはすべて内蔵のメモリ上にのみ存在するするので、揮発性の特徴をもつ。
  • 分散の機能はサーバ側には備わっておらず、クライアント側で実装する必要がある。
  • 有効期限を設定できる。また、記録容量に空きがない場合には、LRU(Least Recently Used)方式で、データ管理され、古いものから削除される。
  • 言語に合わせて、それぞれ、クライアントライブラリが充実している。

memcachedの導入

まずは、memcachedと必要なライブラリをインストールします。

# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
# rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
# yum install memcached libevent libevent-devel
Complete!

以下の理由から、memcachedのプロセスをdaemontoolsで管理するよう設定します。また、これにより、複数のプロセスを手軽に立ち上げることができるという利点もあります。

memcachedのプロセスが落ちたマシンも再度memcachedを起動すると問題なく動作するので,memcachedのプロセスを監視し,自動的に再起動するようにしています。そこで利用したのはdaemontoolsです。

memcachedを知り尽くす:第5回 memcachedの運用と互換アプリケーション

それでは、memcachedをdaemontoolsで管理するように設定します。
※daemontools自体は、既にインストールされているものとします。

memcachedのデフォルトの設定を確認して、必要があれば修正します。

# vi /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

ディレクトリとrunスクリプトを作成します。

# mkdir /usr/local/daemon/
# cd /usr/local/daemon
# mkdir memcached01
# vi memcached01/run

runスクリプトの中身は、以下のようにします。

#!/bin/sh

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

exec 2>&1
exec /usr/bin/memcached -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN $OPTION

実行権限を付加します。

# chmod +x memcached01/run

2つめのプロセスの設定を行います。

# mkdir memcached02
# vi memcached02/run

2つめは、11212ポートで立ち上がり、1024MBの容量を確保するよう設定します。

#!/bin/sh

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

PORT="11212"
CACHESIZE="1024"

exec 2>&1
exec /usr/bin/memcached -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN $OPTION

2つめのrunスクリプトにも、実行権限を付加します。

# chmod +x memcached02/run

/service/ディレクトリにシンボリックリンクを張ります。

# ln -s /usr/local/daemon/memcached01 /service/memcached01
# ln -s /usr/local/daemon/memcached02 /service/memcached02

プロセスが、立ち上がっていることが確認できたら、導入完了です。

# ps aux | grep memcache
nobody    2971  0.0  0.0  42888   928 ?        Sl   Jan30   0:00 /usr/bin/memcached -p 11211 -u nobody -m 64 -c 10240
nobody    2972  0.0  0.0  42888   932 ?        Sl   Jan30   0:00 /usr/bin/memcached -p 11212 -u nobody -m 1024 -c 10240

参考ページ

カテゴリー: サーバ・インフラのこと   タグ: ,   この投稿のパーマリンク

トラックバック

「memcached」をインストールして、複数のプロセスを自動起動するようにする。 への2件のコメント

  1. ピンバック: 「memcached」の使いどころ « FlatLabs Blog

  2. ピンバック: 在 Fedora 上該 Memcached 執行兩個 daemon « Ant's ATField

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>