ここを書き直して転載

memcachedに関する記事は「第1回 memcachedの基本:memcachedを知り尽くす|gihyo.jp … 技術評論社」など何回か書いていますが、最近のmemcachedでの起動オプションのおすすめをまとめてみようと思います。なおこの記事はMemcached Advent Calendarではありません。

まとめるとこんな感じです。

$ memcached -v -p 11211 -U 0 -u memcached -m 1024 \
                       -c 100000  -t 4 -C -B ascii

ひとつずつ簡単に紹介します。

-v ログ出力

ログを verbose モードで起動します。エラーや警告が表示されます。弊社ではmemachedをdaemontools経由で起動し、ログを記録しています。

-v

-vオプションは -vv-vvv と v の数を増やす事で様々なメッセージを出力させることができますが、プロダクション環境では -v だけで十分でしょう。

-p TCPポート

ListenするTCPポートです。デフォルトは11211ですね

-U UDPポート

memcachedはUDP経由でも使えます。使わない場合は

-U 0

としてUDPをListenしないようにできます。

-u ユーザ名

memcachedをrootユーザで動作させることはできません。-u オプションの指定が必要となります。

-u memcached

memcachedをsetuidgid等を用いてrootユーザ以外で起動することもできますが、その際は後述する -c オプションで大きな数値を指定できなくなります。rootで起動して-uにてユーザを指定するのがシンプルです。

-m メモリ容量

最大のメモリーサイズ。デフォルトは64MBですね。単位はメガバイトなので、1GB使いたい場合は

-m 1024

と指定します。

memcachedは起動時に指定したメモリを確保しません。-k オプションを追加すると起動時にメモリを確保しますが、あまり使いません

-c 同時接続数

memcachedが扱える最大同時接続数です。デフォルトは1024。

実際には1プロセスで開く事ができるファイルディスクリプタ数の設定(rlimit)に使われるだけなので、かなり大きな数字にしても余計なリソースを使うなどの心配はありません。

-c 100000

などと大きな数字にしてしまいましょう。

-t スレッド数

memcachedはマルチスレッドで動作します。-t オプションでそのスレッド数を指定します。デフォルトは 4 です。

-t 4

変更しても目に見える差は出てきません

-C CASを無効化

CASを使うと値が変化していない時だけsetを行うというトランザクションのような操作ができるようになります。しかし、1キャッシュアイテムにつき8Byteの容量が必要になるので、全く使わない場合にはそれなり大きな無駄になります。

-C

-C オプションを使うとCASが無効になり、メモリの節約もできます。エコ!

-B プロトコル

memcachedにはおなじみのASCIIプロトコルとBINARYプロトコルがあり、バイナリの方が少し速いみたいです。memcachedはコマンドがサーバに届いた時に最初のデータをみてASCIIかBINARYかを判断しますが、どちらかしか使わない場合、-B オプションで指定してその処理を飛ばすことができます。

-B ascii|binary

デフォルトはautoで、自動的に判断します。

その他のオプション

-d デーモン化

memcachedをデーモンとして起動する場合に指定します。前述の通り弊社ではdaemontools経由での起動なので使っていません

-I 最大のキャッシュアイテムサイズ

デフォルトのmemcachedは1MB以上の大きさのキャッシュを保存することができませんが、-I オプションで変更ができます。

-I 3m

これで3MBとなります

-A shutdownコマンド

12/9にリリースされたばかりのmemcached-1.4.16で追加されたオプションです。shutdownコマンドが有効になります。(すでにflush_allがあるけど) injectionあったらコワイですね

このブログ記事について

このページは、Masahiro Naganoが2013年12月12日 15:27に書いたブログ記事です。

ひとつ前のブログ記事は「Vagrantのprovisionerを使ってmroongaのrpmを作る方法 - MySQL Casual Advent Calendar 2013」です。

次のブログ記事は「WEB+DB PRESS Vol.78 Perl Hackers Hubに寄稿しました」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja