くだらんたわごとばかり続いていましたが、久々にサーバネタです。
最近表示されるまでもたもたする感じが出てきてます。エントリ数とアクセス数が増えているせいかも知れません。サーバの入れ替えはおっくうがってまだやっていないのですが、ちょっとやな感じです。付け焼刃でもどうにかならんものかと思っていたら
cles::blogのチューニング - cles::blogという素敵なエントリを発見。
このサーバはCPUがボトルネックになっているのは火を見るより明らかなので、MySQLをチューニングしてCPU負荷を下げてやれば効果があるかも、というか、絶対に効果ありのはず。
ということで早速試してみました。
cles::blogのチューニング - cles::blogではきちんとボトルネックを調べて対策されていますが、めんどくせーので一番効果のありそうなクエリキャッシュを有効にすることだけやってみました。キャッシュは経験上効果絶大だもん。
設定は簡単簡単。要はMySQLにキャッシュクエリのパラメータを渡してMySQLを立ち上げるだけです。Vineの場合、起動時に立ち上げるサービスのシェルスクリプトは、/etc/rc.d/init.d/のディレクトリの中に大体入っています。MySQLの起動スクリプトも例にもれずこの中にありますので、これを少々いじります。
1、エディタで/etc/rc.d/init.d/mysqlを開きます。(編集する前に、念のためコピーを取っておくと幸せになれるかも)
shell>vi /etc/rc.d/init.d/mysql
2、次のところをパラメータを渡して起動するように修正します。
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &
→ $bindir/mysqld_safe --datadir=$datadir --query_cache_size=16M --query_cache_type=1 --pid-file=$pid_file >/dev/null 2>&1 &
パラメータについては
MySQLマニュアルの
6.9.2. クエリキャッシュの設定を参照ください。俺の場合はキャッシュサイズとキャッシュタイプの設定だけにしておきました。
3、修正したらMySQLを再起動します。
shell>/etc/rc.d/init.d/mysql restart
念のため、apacheも再起動したほうがいいかも。
さて、結果は…
おおおっ、なんとなく速いぞ。NucleusのpluginでNP_Cacheと言うのがありますが、
NP_Cacheを入れたときくらいに速くなりましたね(今はとある事情でNP_Cacheは外してます)。両サイドのJavaScriptを使ったものは速くなりませんけど、エントリ本体自体はかなり速く表示されるようになりました。
めでたしめでたし。