memcached 1.4の到来

第3回 システム運用監視に役立つ統計/集計システム

この記事を読むのに必要な時間:およそ 3 分

株式会社ミクシィの前坂です。前回はmemcached 1.4の通信面における話題を紹介いたしました。今回はmemcached 1.4で強化されたシステム運用面や監視に役立つ統計/集計システムを紹介します。

statsの機能強化

memcachedには以前からstatsというコマンドがあり,statsコマンドを特定のキャッシュサーバに発行することで,そのサーバの状態を調べることが可能でした。今回の1.4リリースでは,取得できる情報が新たに増え,システム運用者はより細かくmemcachedを監視することができるようになりました。具体的には以下の情報を得られるようになりました。

  • デーモンの起動オプション
  • スラブ単位でのアクセス記録
  • 削除処理
  • インクリメント,デクリメント処理
  • CAS処理
  • 重いリクエストを含んだ通信の記録

デーモンの起動オプションを取得する

キャッシュクラスタの運用者は何台もの物理サーバを管理する必要があり,すべてのサーバが同スペックであるとは限りません。したがって,立ち上がっているすべてのmemcachedデーモンが同じ設定で起動されているとは限らず,手軽にどういった設定で特定のデーモンが起動されているかを知りたいニーズが現場であるかもしれません。UNIXの場合はps(1)をつかってプロセス名を基にオプションを調べることも可能ですが,1.4からは "stats settings" というメッセージをmemcachedに送信することで,起動時の設定を取得できます。

図 telnetでコマンドを発行した例

Connected to localhost.
Escape character is '^]'.
stats settings
STAT maxbytes 67108864
STAT maxconns 1024
STAT tcpport 11211
STAT udpport 11211
STAT inter NULL
STAT verbosity 0
STAT oldest 0
STAT evictions on
STAT domain_socket NULL
STAT umask 700
STAT growth_factor 1.25
STAT chunk_size 48
STAT num_threads 5
STAT stat_key_prefix :
STAT detail_enabled no
STAT reqs_per_event 20
STAT cas_enabled yes
STAT tcp_backlog 1024
STAT binding_protocol auto-negotiate
END

スラブ単位でのアクセス記録

memcachedのキャッシュメカニズムにはスラブというさまざまのレコードサイズに対応したキャッシュ可能領域(chunk)をまとめる大きな⁠枠⁠が存在します。1.4で強化された統計システムでは,スラブ単位でキャッシュの状態を調べることが可能になり,より明確にサーバの健康度やアクセスされているデータを観測することができます。memcachedの内部構造に関しては過去に「memcachedのメモリストレージを理解する」という記事で紹介させていただきました。

slabの状態を調べる⁠stats slabs⁠という⁠stats⁠のサブコマンドは以前から存在しましたが,今回のアップデートで以下の情報が出力に追加されました。

  • get_hits(レコードの取得に成功した回数)
  • cmd_set(書き込みに成功した回数)
  • delete_hits(削除処理を行った回数)
  • incr_hits(インクリメント処理が成功した回数)
  • decr_hits(デクリメント処理が成功した回数)
  • cas_hits(CAS更新に成功した回数)
  • cas_badval(識別子のミスマッチによりCAS更新に失敗した回数)

上記の情報はすべてのスラブに対して個々に保持されます。このように細かくどうmemcachedのデーモンがアクセスされているかの情報を取得することにより,システム運用者はアクセスされているデータの偏りや,起動オプションのチューニングに関するヒントを得ることができます。

著者プロフィール

前坂徹(まえさか とおる)

株式会社ミクシィ 研究開発グループ。memcachedコミッター。

http://torum.net/

コメント

コメントの記入