memcachedを知り尽くす

第5回 memcachedの運用と互換アプリケーション

この記事を読むのに必要な時間:およそ 4 分

memcachedの運用ノウハウ

これまでmemcachedの内部構造やライブラリなどを紹介してきましたが,それ以外の運用ノウハウをいくつか紹介します。

daemontoolsを利用した起動

通常,memcachedは安定して動作しますが,mixiでは現在の最新バージョンである1.2.5において何度かmemcachedのプロセスが落ちることを経験しています。memcachedが数台,障害を起こしてもサービスに影響がないように作られていますが,memcachedのプロセスが落ちたマシンも再度memcachedを起動すると問題なく動作するので,memcachedのプロセスを監視し,自動的に再起動するようにしています。そこで利用したのはdaemontoolsです。

daemontoolsはqmailの作者であるDJBが作成したUNIX のサービスを管理するツール集で,サービスを起動させ,サービスが落ちたら再起動するsuperviseというプログラムが利用できます。

daemontoolsのインストールはここでは紹介しませんが,mixiでは以下のrunスクリプトでmemcachedを起動しています。

#!/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 $OPTIONS

設定をsysconfigディレクトリに分離しています

監視

mixiではmemcachedの監視にオープンソースの監視ソフトウェア「nagios」を利用しています。

nagiosでは簡単にpluginを自作することもできるので,memcachedの動作の監視をgetやaddを発行して詳しく行うこともできますが,mixiではstatsコマンドを発行してmemcached動作を確認しています。

define command {
command_name                   check_memcached
command_line                   $USER1$/check_tcp -H $HOSTADDRESS$ -p 11211 -t 5 -E -s 'stats\r\nquit\r\n' -e 'uptime' -M crit
}

そのほか,mixiではstatsコマンドの結果をrrdtoolを利用してグラフ化し性能監視を行ったり,毎日メモリの使用量をまとめたレポートを作成してメールにて開発者に共有しています。

memcachedの性能

memcachedは非常に高性能であるというのは連載の中でも紹介してきましたが,実際の性能をmixiの事例から紹介します。ここで紹介するグラフはもっとも極端にアクセスが集中していたmemcachedサーバで,サービスに用いられていたものになります。

図2 リクエスト数

図2 リクエスト数

図3 トラフィック

図3 トラフィック

図4 TCP接続数

図4 TCP接続数

上からリクエスト数,トラフィック,TCPの接続数となります。リクエスト数では最大15000qps,トラフィックでは400Mbpsに達し,その際の接続数では1万コネクションを超えています。このサーバも特別なハードではなく,最初に紹介した通常のmemcachedと同じマシンとなります。この時のCPU利用率ですが,

図5 CPU使用率

図5 CPU使用率

まだidleが残っており余裕があることがわかります。このようにmemcachedの性能は非常に高いので,Webアプリケーションの開発者は気兼ねなく一時的なデータやキャッシュデータの保存場所としてmemcachedを活用していくことができます。

著者プロフィール

長野雅広(ながの まさひろ)

株式会社ミクシィ 開発部システム運用グループ アプリケーション運用チーム所属。mixiのアプリケーション運用に携わっています。Perlのカンファレンス,YAPC::Asia 2008でもmemcachedに関する発表を行いました。

URLhttp://blog.nomadscafe.jp/