XCacheとMySQLのquery cacheの効果
先日19日に入れたXCacheとMySQLのquery cacheですが、キャッシュヒット時とミス時のペナルティとか、そういう値は良く分からないのですが、統計値を見る限りは効果がすごいですね。今のところ不具合もないです。
MySQLのqueryの統計を見ると、下図(muninのグラフです)を見る通り、ほとんどがキャッシュヒットになりました。右端の紫がキャッシュヒットで、有効にした途端にselectのクエリ数が激減し、キャッシュヒットで返せるようになっています。値が増えているのは、理由がよくわからない。アクセスが増えたわけではないです。
設定はmy.cnfの以下を[mysqld]セクションに記述してmysqldをrestartするだけ。簡単ですね。なんでデフォルトで有効じゃないんだろう…
query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_size=24M
query_cache_type=1
次、XCache。これも統計を見るとコードはほぼ100%、データも85%程度がキャッシュヒットです。うちではブログくらいにしか使っていないので、このサイズで済んでます。
設定は以下の通り。
configure; make; make installのあと、/etc/php.d/xcache.initに以下を記述してhttpdをrestartします。admin.userとadmin.passは適当に設定してください。admin.passにはパスワードをmd5にかけたものを書きます。統計を見ると、var_sizeはもっと小さくていいと思いますね。デフォルト1Mだったのを少ないかと思って8Mに増やしたんですが、1Mでちょうどいいかもしれません。いや、Availが残り少ないのでvar_sizeは増やしといたほうがよさそうですね。32Mに増やして様子を見ることにしました。際限なく増やしていってもしょうがないけどね。逆にcodeのほう(xcache.size)は20MBくらいしか使ってませんので、半分に減らしても大丈夫でしょう。
[xcache-common]
zend_extension = /usr/lib/php/modules/xcache.so
[xcache.admin]
xcache.admin.auth = On
xcache.admin.user = "xxxxxx"
xcache.admin.pass = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
; xcache.admin.pass = ""
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 64M
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 8M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off