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
導入はめちゃ簡単なので、使ってみても良いかと思う。