apache2.2のキャッシュ容量
先日apache2.2のキャッシュの設定を文字数2、階層の深さ2に設定して一安心。週末を過ごして今日監視画面をみたら真っ赤になっていました。何事とおもってみてみると、またディスク容量がパンク。
なんなんだ、このカーブ。多分とちゅうから緩やかになってきて一定レベルで安定するのかとおもってたんだけど、見事に外れました。
これは、キャッシュディレクトリを定期的に掃除するしかないかと考えを換えて、findで消そうかなぁとおもい、いろいろ調べていたところ、ちゃんとapacheのほうでツールを用意してくれていました。
htcachecleanというツールがあります。マニュアルはこちら。英語しかないですね。私の超適当訳を書いておきます。
htcacheclean
htcachecleanはmod_disk_cacheストレージのサイズを一定の限度に保ちます。このツールは、手動でも、デーモンモードでも動作させることができます。デーモンモードで動作させた場合、このツールはバックグラウンドでスリープして、削除すべきキャッシュされたコンテンツを定期的にチェックします。デーモンはTERMかINTシグナルで停止することができます。
文法
htcacheclean [ -D ] [ -v ] [ -t ] [ -r ] [ -n ] -ppath -llimit htcacheclean -b [ -n ] [ -t ] [ -i ] -dinterval -ppath -llimit
オプション
- -d
- italic;">interval:デーモンとして動作させます。intervalで指定した分数ごとにキャッシュディレクトリをチェックします。このオプションは-D,-v,-rの各オプションとは同時に使用できません。デーモンをシャットダウンするときは、SIGTERMかSIGINTシグナルを送ります。
- -D
- ドライラン(Do a dry run)で動作し、なにも削除しません。このオプションは-dオプションとは同時に使用できません。
- -v
- 冗長モードで動作し、統計を出力します。このオプションは-dオプションとは同時に使用できません。
- -r
- 全部消します(Clean thoroughly)。このオプションが指定されたときは、apacheウェブサーバは停止している(または、キャッシュにゴミがある)ものとみなします。このオプションは-dとは同時に使用できません。また、-tオプションを含んでいます。
- -n
- ナイスして動作させます(CPU使用の優先度を最低にする)。このオプションを指定すると、低い優先度で動作して、他プロセスの邪魔になりません。htcachecleanは指定された時間の間はスリープしており、(a)ディスクIOは延期されて、(b)カーネルは(htcachecleanの)他のプロセスの合間にスケジュールして動作させます。
- -t
- 空のディレクトリを消去します。デフォルトの動作(-tを指定しない)ではキャッシュファイルのみを消去します。しかし、設定によっては大量のディレクトリが作成されます。これには注意が必要です。もし大量にディレクトリを作成するような設定になっていた場合、inodeやファイルアロケーションテーブルが不足することが起こりえるでしょう。この様な設定の場合、このオプションが役に立ちます。
- -p
- italic;">path:ディスクキャッシュのルートディレクトリをpathで指定します。これはCacheRootディレクティブで指定した値と同じものを指定するといいでしょう。
- -l
- italic;">limit:トータルでのディスクキャッシュサイズの制限値をlimitで指定します。この値はデフォルトではバイト数です(または数字に'B'をつけます)。キロバイト単位をあらわすにはKを、メガバイト単位をあらわすにはMを数字につけます。
- -i
- ディスクキャッシュになにかしらの変更があったときにのみ動作します。このオプションは-dオプションと同時に指定されたときにのみ有効です。
終了ステータス
htcachecleanはすべてのオペレーションが成功したとき0("ture")を返します。それ以外の場合は1を返します。
-iの意味が良くわからないな。それにsyntaxで出ている-bの解説が無いし。
とりあえず私のサイトでは
htcacheclean -n -t -d60 -p/usr/local/apache2/cache -l30720M
と指定して動作させています。クリアするのに1時間以上かかったらどうなるんだろ。ちゃんと動作したかどうか、また報告します。