memcachedを学ぼう (gumiStudy#2)
- kazeburoさんによるmemcachedのお話が聞ける貴重な機会でとても楽しみに参加させてもらいました。
- 会場に対する「memcachedを使ったことない人」という質問に誰も手を挙げなかったことからも、おそらく自分が一番わかってなかった気がしますが気にせず感想というかメモを書いてみます。
- ちなみにmemcachedはインストールして、データを入れたり取ったりして少し遊んだくらいしかありません。。手を挙げずにすみません。
- 詳細は、資料を公開してくださっていますので、そちらをご参照ください。
memcachedについて
- 最初は、導入としてmemcachedについての概要をわかりやすく説明くださりました。
memcachedとは?
分散構成について
- 複数のmemcachedサーバーを立てて分散させる場合は、クライアントで分散アルゴリズムを実装する必要がある。
- アルゴリズムについては後述。
- 分散して配置する際は、「6GB * 2台」の構成よりも「2GB * 6台」の構成の方が運用を考えても好ましい。
- 専用サーバーを立てるのが望ましいけど、アプリケーションサーバーの空きメモリを利用して立ててもいい。
起動オプションについて
- 「-c」
- 最大接続数。
- デフォルトは1024になってるけど、262144など大きな値に設定しておく。
- 1024以上にするにはroot権限が必要。
- memcachedをrootで動かすことは出来ないので、上記設定をする場合は「-u nobody」など実行ユーザーを指定する必要がある。
- この値は大きな値を指定しても特に問題はないので、はじめから大きな値を指定しておくといい。
- 「-l」
- ListenするInterface。
- デフォルトでは、全てのInterfaceでListenしているので、「-l 127.0.0.1」、「-l 192.168.0.1」など指定する。
- ただ、制限することで運用時に不便になることも。
- 「-v -vv -vvv」
- 冗長モード。
- 「-p」
- TCPポートを指定。
- 「-U」
- UDPポートの指定。
- 「-p」と「-U」 の両方しておくのがいい。片方だけの指定だと意図した通りにならない?
- 「-m」
- 最大メモリサイズ。
- ただし、指定したサイズが100%使用されるわけではない。
- 専用サーバーでも指定サイズの80%くらい。
- また、プロセスサイズは指定した値以上に大きくなる。
- 「-C」
- CASを無効に。
ここまでの設定をまとめたオススメの起動オプション設定。
-c 32768 -u nobody -C -m 16GB(サーバーに応じて) -p 11211 -U 0
- 1.4からは「stats settings」というコマンドで起動時のオプションの確認が出来る。
監視
- 監視には、稼動監視とリソースモニタリングの2つがある。
- 何を監視するか
- 動いているか
- コネクションが足りているか
- メモリ使用率
- キャッシュのHit率
- 負荷
- get/set コマンドの発行回数
- サーバーの偏り
- 監視をすることによりサービスの状態を確認しておくのは本当に基本だと思いますので、どの項目をどうやって監視するのかといった知識や方法はしっかり身につけたいなと思いました。
ツール
- 稼動監視・・・Nagios
- プラグインを簡単に作成することが出来、プラグインを追加していくことで監視項目を追加していく。
- Nagiosについては、「スケーラブルWebサイト」で少し見ていたくらいなので、ここで話が聞けてとても勉強になりました。
- リソースモニタリング・・・Ganglia、CloudForecast...
- CloudForecast
- リソース監視のためのフレームワーク/ツール。
- mixiのリソース監視項目をもとに作成。
- 高速かつ簡単に設定が出来、小規模から大規模まで1つの設定で対応が可能。
- Livedoorでは、1200台、5000サービスの監視を行っているそうです。すごいですね。
- 詳しくはYAPC::ASIAで!とのことでした!楽しみです。
- インストールの流れとしては、yumで依存モジュール(net-snmp、net-snmp-perl、rrdtool、rrdtool-perl)をインストール後、gitからCloudForecastを取得し、cpanmでインストールする流れになるそうです。
- 前回のYokohama.pmとCasual Perlのイベントの際に、間に合わず話を聞くことが出来なかったので、今回話を聞くことが出来て嬉しかったです。
- 各設定ファイルもYAML形式で直感的でわかりやすそうでしたし、CGIなど設定することなく利用出来るWebの管理画面も見やすくていいですね。
- 使ってみたいなと思いました。
その他監視の注意点
まとめ
トークセッションで出ていた話。
感想
- memcachedについても実際に使えるノウハウ満載で当然すごく勉強になったのですが、監視や運用についてこれまであまり話を聞いたことがなかったので、その点がすごく勉強になりました。
- 今回のお話を聞いて、監視、運用の難しさや職人的な部分を感じることが出来、改めてそのスゴさや面白さを感じました。
- 下記のgihyoでの連載ページを読んで、さらに勉強しようと思いました。
- kazeburoさん、運営者の皆様、ありがとうございました!