apache

こんにちは、ツチノコの親分です。

今回はWEBアプリケーションの動作モードについてです。

webサーバでphpを動かすといってもいろんな動作方法があります。

cgi経由やmod_phpといったモジュール直で動作させる方法や
fastcgiのようなデーモン型のモジュールで動作させる方法もあります。
また、プロクシを利用した外部のアプリケーションサーバとの連携もその一つになるかと思います。

phpのバージョンの混在が必要なのでcgi経由で動作させている方がいたり
パフォーマンス重視ということでfastcgiで。なんて方もいるのではないでしょうか。

個人的にモジュール直だとapacheのプロセス内でのforkコストが高るからいやだなあとか、デーモン型だと書き方を考慮する必要がありそうだなあとか、両方の良いとこどりができそうなのがプロクシ型なのかなあと思っています。いまならhackが恰好いい。

一概にどのモードがいいのか判断はつきにくいのですが、それぞれの会社のポリシーに合わせたモードをお使いいただくのが良いのかなと思います。

プログラム動作モードいろいろ

ところで、

今回の作図はGriffyを使っています。Confluenceにたまたまプラグインとしてあったので、勉強がてらに作図してみました。

apache, linux

apacheでmod_disk_cacheを利用してキャッシュサーバを構築していますが、

mod_disk_cacheはキャッシュが利用するディスクの残り容量をコントロールしてくれません。

ですので、htcachecleanを使って容量のコントロールを行います。

ただ、このhtcacheclean

mtimeを利用してファイルを削除する仕様ですので、

ファイルが作成もしくは修正された時刻順(古いファイルから)で削除が行われるためヒット率が向上しません。

atimeを利用すれば人気のないコンテンツから削除が可能となりヒット率が向上するのですが現在の仕様ではそうなっていません。

そこで下記の3つのアプローチのいずれかで不人気作品からファイルが消えていくように設定します。

  1. htcachecleanのソースを改造する
  2. findコマンドを利用してatime基準で削除する。htcachecleanを使わない。
    例)find /cache/* -atime +600 -exec rm -rf {}
  3. findでアクセス頻度の少ないファイルを抽出しtouchでmtimeを強制的に修正してhtcachecleanを使って削除

キャッシュサーバとなるとnoatimeでmountしている方も多いと思いますが、

dmmではnoatimeオプションは指定せずにこういった用途のため残すようにしています。

PAGE TOP