2009-01-07
キャッシュサーバ稼動開始
携帯ユーザさんのかたは読み飛ばしてください。
というかたまる会員の方は読み飛ばしてください。
最近家計簿の話題ばかりでしたが、ちょっと技術的なことも書きたくなってきてしまったので。。。本当に自己満足ですみません。
とはいえ、すこしこういった先進的なことをやっているんですよ~ってことを書いておくことも会社のためには必要なので。。。
たまるサーバは、WEBサーバ×1、AP(rails mongrel_cluster)サーバ×3、DBサーバ(mysql)×1の合計5台の構成でした。
ruby on railsはユーザが増えるとまともに処理をしていると負荷が増えすぎるので(とはいってもまだこのレベルではちょろいもんですが)、キャッシュを使用するのが定石、というか前提になっています。
ところが、APサーバをはなからクラスタ構成で作ってしまって、キャッシュを適当な場所に作っていて(tmpフォルダに作ってました)、全くキャッシュが利かない~って悩んでいましたが。。今回ようやくキャッシュが利くようになりました。
よくよく原理を考えればなんてイことは無かったのですが、少し悩んだので方法を書いておきます。
1) nfs で共有ディスクを立てます(サーバは、今回ひとつ追加、APサーバ3台にクライアントの設定をします。同じ場所にマウントします。例 /mnt/cache )
http://kajuhome.com/nfs.shtml
この辺を参考にしてください。(cent os の場合)
2) rails の publicフォルダのみ、 1) でマウントしたAPサーバの下にチェックアウト(subversion使っている前提です。使っていない場合は、public をコピー。とはいえ、クラスタ構成でリポジトリ使ってないなんて話は無いですよね)。
svn co XXXXXXX/myapp/public
3) mongre_rail の config(mongrel_cluster.yml) を変更(document root に 2) で作ったpublic ディレクトリを指定)
docroot: /mnt/cache/public
4) envirionment.rb に 2) で作ったパブリックにキャッシュをはくように指定
ActionController::Base.page_cache_directory = "/mnt/cache/public"
といった感じです。
document root = ページキャッシュの場所じゃないと駄目!!つまり、image script などと同じ場所です。ってことは、よくよく考えれば納得なんですが、どうもそれなら、asset server も一緒に設定しないとだめなの?わから~んとかなってしまうとはまります。
apache の機能を使って、キャッシュの有無を確認するという方法もあるようですが、どうも性能が出ていないみたいだったので止めました。
全ブログ一覧
れっつ
さんのブログ一覧
れっつ
さんのプロフィール