どうもおかしい、結構な容量確保されているはずなのに頻繁にキャッシュ溢れを起こしてるような気がする…と思って調べてみたら、設定がきちんと反映されてなかった。以前の担当者が設定したと言ってたのでそのままスルーしてたんだけど、確認して良かった。
memcachedの設定は、例えば/etc/init.d/memcachedに保存されている。サーバ上で覗いてみたところ、以下のように設定されていた。

### Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="512"
OPTIONS=""


「CACHESIZE」がmemcachedに回すメモリの最大容量で単位はMB。この設定なら512MBまで保存されるはず…なのだけど、Telnetで繋いでみても64MBとしか表示されない。

telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
stats

STAT limit_maxbytes 67108864

END


なんなんだいったい…と思って、/etc/init.d/memcachedを見返してみたら設定には続きがあってこうなっていた。
### Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="512"
OPTIONS=""
SYSCONFIG="/etc/sysconfig/memcached"


まぁ分かってしまえば簡単なことなのだけど、要するにここでの設定は/etc/sysconfig/memcachedによって上書きされていたっていうわけ。ちなみに/etc/sysconfig/memcachedは予想通りこのようになっていたので、

PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

CACHESIZEを512に変更して、memcachedを再起動。
先ほど同様にtelnet接続してstatsで見てみたら無事に反映されていた。

…なんというミス。。。おじさんビックリだよ。
多分、彼に伝えたら彼もビックリするんじゃないかと思う。まぁしかたないよね。



ちなみに

PHPで動くこれを使うと、現在のmemcachedの状況をグラフ化してくれるらしい。

[memcached] PHPでmemcachedの稼働状況をチェック - ありんく tech-log

導入はめちゃ簡単なので、使ってみても良いかと思う。