先日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