先週のmixiの大規模な障害は、memcachedに対する接続が非常に多いところから発生したようなので、CloudForecastでその接続数をモニタリングできるようにしてみました。
(mixiではたぶんおそらくmemcachedは専用のサーバとなっているので、通常のTCP Established数がそのんままコネクション数になるはず)
グラフは以下のように出力されます
赤いラインが起動時に指定した -c の値。
ところで、このmemcachedの起動オプションを取得する方法は今までないものだと思っていたのですが、memcached 1.4以降なら「stats settings」というコマンドで取得できるようです。
% telnet localhost 11211
Trying ::1...
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 4
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
STAT auth_enabled_sasl no
STAT item_size_max 1048576
END
この機能、知らなかった!と思ってぐぐったら、gihyo.jpの前坂氏の連載にすでに紹介されてた。読んでないのバレタ!
あとはNagiosプラグインを書いて、一定のコネクション数よりも大きくなったらアラートとかあると良いかもですね。