モノノフ日記

普通の日記です

memcached Night in Tokyo #1に参加してきました

memcached Users Group :: Japan | Google Groups

昨日、mixiで行われたmemcachedなイベントに参加してきました。
発表者の方々が担当されてるサービスでmemcachedがこんな感じで使われてるよー、という実際の事例をプレゼンされていたので非常に参考になりました。
自分はまだ小さいサービスでmemcachedを単純なデータストレージとして普通に使ってる1ユーザなので、今後スケーリングさせていく上でどうするべきか、という点で考えさせられる事が多々。

ビデオも撮影されていたようので、おそらく後日公開もされるんじゃないでしょうか。

個人的にはkiyotakaさんの発表が興味深かったです。こんな使われ方もするんだなと改めてmemcachedの可能性を感じた気がします。あと、id:yasui0906さんのrepcachedの発表後の質疑応答がアツかった。やっぱり皆さんレプリケーション興味あるんですね。

懇親会ではid:koyhogeさんと初めてお会いしてお話ができた!ブログをチェックしてる人と実際に会うと嬉しいです。
いろんな話題が出ましたがロードアベレージの話が面白かった。10〜20とかだと最近のCPUだと頑張って動いてくれるよね、という話にw id:kunitさんは200を越えたことがあるそうですが、その領域には踏み込みたくないです。。。

以下、雑感メモになります。

repcachedの仕組みや運用について

  • memcachedのパッチとして作ってる
3原則
  • パフォーマンス低下は×
  • memcachedと同じ動作
  • 安定動作
Ver1.0
  • オンラインコピーみたいな処理
    • マスタがスレーブにコピー
    • マスタが落ちたら、スレーブがマスタに
    • 復帰した旧マスタがスレーブに
    • いろいろ問題がわかってきたのでマルチマスタ化
Ver2.0
  • マルチマスタ
  • どっちに書いてもOK
    • クライアントライブラリで分散し、repcachedでコピー
Ver3.0の予定
  • 3台以上のスケールに対応させたい
  • マルチスレッド
  • memcached本体のバージョンアップが気になる
  • とりあえず1.2.Xベースで
Q&A
  • memcached本体のバージョンが上がると再パッチ?
    • そうなります。けど、外に出せる所は分離してるから更新対象はそんなに多くない(らしい)
  • データの同期は?
    • PHPだと1秒(デフォ設定)
    • keepalivedの場合は5秒
    • レプる前にF/OしちゃうとOUT
  • 同期版は?
    • 作ってみたけど非常に遅かった
  • TCP/IPコネクション数は?
    • 1本。切れたら-Xオプションつけて再接続
  • ネットワーク分離する案とかは?
    • 分離するデメリットもあるので、今は同一ネットワークに置いて使うことを想定(?
  • ビジー状態になったりする?
    • 負荷テストで再現できなかったので、たぶん大丈夫

汎用ストレージとしての様々な使い方

  • Solarisで利用
    • 会場は利用者0
  • DB-Cache
    • DBとmemcached、両方にsetしてreadはmemcachedから
    • Read値がDBと同じである必要の場合
      • memcachedの値を意図的に削除
  • カウンタ
  • セッションマネージャー
  • ワークエリア
  • ロックサーバ
  • キュー
  • configureにenable-threadsをつけると、Solarisだけconnectionが不安定に
  • perlでmemtopを作った
Q&A
  • Tomcatのセッションマネージャーは公開しないの?
    • 仕事が落ち着いたらMLに流します
  • Javaのmemcachedクライアントライブラリもう1つあるよ?
    • JDK4に未対応でした
  • memtopは公開しないの?
    • これもMLで
  • Solaris使いが会場に実はいた
    • コンパイルオプション重要

mixiとmemcachedに関する何か

  • memcachedサーバ: 135台
  • 1.2.5
    • かなりバギー
    • Busy Loop
  • 1.2.6へ
    • アップグレードに3日
    • rpm(yum)使ってる
  • configureオプションは特に何も指定せず
  • 起動オプションも普通
  • Consistent-Hashing(ketama)
  • バッドノウハウ
    • getでもsetできちゃう
    • キーは250文字、制御文字や空白はNG

memcachedとはてなの微妙な関係

  • DBIx::Moco
    • はてな謹製のO/Rマッパー
    • Rubyライクなリスト操作
    • 透過的キャッシュ(memcachedで)
  • memcachedのヒット率は90%超
  • facebookがiDC間でmemcachedを同期してる方法が気になる

memcached Binary Protocol in a Nutshell (発表資料)

  • 1.3からbinary protocolサポート
    • performance
    • extensibility
  • 1.3は下位互換も問題なし
Q&A
  • パフォーマンス向上ってどれくらい上がる?
    • 実装終わったばかりでまだ誰もベンチマーク取ってない
      • クライアントライブラリの対応も必要となってくる
    • 現在のtext parserでも遅くはない
  • バイナリプロトコルだと文字列エスケープとかいらなくなる?
    • いらない。セキュリティも向上!