« GWに読むと良い技術書4冊という釣りタイトル | メイン | perlbrewのperlをrsyncでばら撒くときの注意点 »

2012年5月26日

Kyoto Tycoonでmemcachedプロトコルの圧縮オプションを有効にすると捗る

最近、セッションストレージはKyoto Tycoonを使っています。ゲームだとFlash生成時の情報をセッションに突っ込んだりするので、セッションデータが大きくなりがちです。それをユーザーごとに頻繁にGet/Setされると結構バカにならないトラフィックになったりulogがすごい勢いで溜まったりします。

Kyoto Tycoonはmemcachedプロトコルで使うことが多いでしょう。実はmemcachedプロトコルには、データを圧縮して通信するオプションがあり、Kyoto Tycoonでもそれを使うことが可能です。

Cache::Memcached::Fastだとこんな感じで指定できます。

my $kt = Cache::Memcached::Fast->new({
    servers   => [...],
    compress_threshold => 500,
    compress_ratio     => 0.9,
});

この例だと500byte以上のデータを圧縮してくれます。ただし、圧縮してもデータサイズが90%以下にならない圧縮効果が薄いデータは圧縮しないという設定です。

凄いのが圧縮・非圧縮のデータが混在しても大丈夫だということ。つまり、既に稼働しているKyoto Tycoonに対して、途中から圧縮を有効にすることが可能なのです!

実際、某サービスで途中から圧縮オプションを有効にして問題なく稼働しております。

この辺の情報は全て@fujiwaraに教えてもらったもので、基本的にfujiwara無双であります。

投稿者 Songmu : 2012年5月26日 15:21