memcachedのこと

運用チームから「データ設定間違えちゃって、その情報でデータがキャッシュされちゃったみたい!いつキャッシュって消える??」と問合せアリ。24hキャッシュですと答えると、そんなに待てないということで手動で削除する運びになりました。

データのキャッシュに使っているのは、memcached

今まで意識せずに使ってきた、昔からあるkey:valueのストア機構。

メモリに乗せるから早いんだよネ。

それくらいの知識しかないので、調査したことを記録する。

参考

github.com

DBアクセスで負荷が高いならmemcachedを使おうという内容のチュートリアル


TutorialCachingStory が面白かったです。
ある日サーバーの負荷があがったときのmemcachedの導入をしたシステム管理者とプログラマーの冒険チックな語りお話し。

6台のWebサーバーがあり、そのうち3台にmemcachedの導入を決めたシステム管理者。
その3台にRAMを1GBずつ追加し、memcachedの起動条件を1GBにして起動。
「だから何?まだなにもできてないじゃないか!」というプログラマーに対して
クライアントライブラリのマニュアルを見せてみると、どう使えばいいかピーンと来たプログラマ
そういえばあのSQLクエリ、5秒掛かるんだよね。memcachedに入れたらいいのでは!となっていくストーリーだと思われます。

なんか血が噴き出すとかデータベースが病気だとかの表現がちらほら(笑)

ハードウェア要件

気になった内容を抜粋です。

CPU要件

高速に動くという目的のために、CPUは一般的に軽く、bitが小さいCPUでもたいてい動く。

RAM要件

memcachedのいいところは複数のmemcachedを1つのように扱えること。
memcachedが使うRAMのサイズはほぼ同じサイズにしておくと便利。
追加や削除の際に、クラスターの均一性のため特定の「重さ」を 気にかけなければいけなくなるから?
ちょっと翻訳が難しい..

あとは、メモリを過剰に割り当ててSWAPが使われないように細心の注意を払うこと!
高速RAMは必要ない、測定できるほどメリットはないと、と書いてある。

聞きなれない単語NUMAへの言及

e-words.jp

NUMAとは、メモリ共有型のマルチプロセッサシステムの実装方式の一つで、メモリへのアクセス速度が均一にならないような方式。

NUMAシステムの場合でも、memcachedは通常の負荷なら動作はOkayとのこと。
複数のNUMAノードにまたがって実行された場合のベンチマーク条件下で測定可能なパフォーマンスの低下があり、
あなたがパフォーマンスに非常に敏感であり、NUMAシステムを持っている場合には・・・
というNUMAシステムでパフォーマンスにとても敏感な場合向けの注意書きがある。


あまり書けてないけど時間切れ..。続きはそのうちに。