ここを書き直して転載
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あったらコワイですね