Apacheのログはテキストファイル書き出しなのでリクエストを発生するたびにログを書き込む処理をするのではなく、一定量メモリに蓄えてから書き出し処理を行う事で高速化が見込めるとの事です。ホエ~色々考えますなぁ。さっそく設定してみました。
BufferedLogs ディレクティブを使うと mod_log_config の挙動が変化して、 複数のログを書き出す際に、それぞれのリクエスト処理後毎に 書き出すのではなく、いったんメモリに蓄えてから、 まとめてディスクに書き出すようになります。
上記がApacheマニュアルの「mod_log_config」の項からの引用。実は「Apacheチューニング: ロギングを高速化する」というブログエントリーでたまたま見たものなのですが、Apacheマニュアルも漁ってみた。この機能はつまりmod_log_configというモジュールの機能を使うものでLogフォーマット等を制御している部分。
ログは基本的な機能の一つなのでほとんどの場合は最初からインストールされていますが、されていない場合は別途入れます。DSO形式でのモジュールの場合、httpd.conf等の設定ファイルに以下のような記載が追加されていれば大丈夫。
LoadModule log_config_module path/to/modules/mod_log_config.so
後は、「On/Off」で指定するBufferedLogsディレクティブを指定する。
BufferedLogs On
これでApacheを再起動すればOK。簡単です。
ただ、Apache2.0.41以降の機能であると言う事と、まだ実験中の機能との事で基幹システム等にはまだ使わない方が良いかも…っていう点をご注意を。