Apacheのログ設定を変えてパフォーマンスをあげる方法

【この記事の所要時間 : 約 4 分

徒然なるままにBlog – Apacheチューニング: ロギングを高速化する」でログ出力設定を変更して、Apacheのパフォーマンスをあげる一例が取り上げられていた。

あまり知られていません(と思われる)がApache2(2.0.41以降)にはアクセスログの書き出しをメモリにバッファリングし高速化させるという機能があります。
今回はその機能を有効にするとどれぐらい速くなるのか調べてみました。
設定方法はhttpd.confに

BufferedLogs On

と追加するだけでログのバッファリングが有効になります。
以下ベンチマークを取った結果です。

バッファリング無効 984 Request/Sec
バッファリング有効 1033 Request/Sec
(参考)ロギング無し 1055 Request/Sec

※小さなhtmlファイルに対してab -c 100 -n 1000を何度か繰り返した結果の平均です。
体感では違いを感じられないとは思いますがベンチを取るとおよそ5%程Request per secondの値が上がっていました。
静的なファイルが中心のリクエスト数の多いWebサーバであればこれを有効にすることによって多少は速くなるのではないでしょうか。
1行追加するだけで(少し)パフォーマンスアップできるのでオススメです。
追記:
BufferedLogsディレクティブは未だにexperimentalなままなので使用には注意が必要です。

とのことで、Apache Software Foundationをチェックしてみたら・・・・

BufferedLogs ディレクティブ

説明: ディスクに書き出す前にメモリにログエントリをバッファする
構文: BufferedLogs On|Off
デフォルト: BufferedLogs Off
コンテキスト: サーバ設定ファイル
ステータス: Base
モジュール: mod_log_config
互換性: 2.0.41 以降

BufferedLogs ディレクティブを使うと mod_log_config の挙動が変化して、 複数のログを書き出す際に、それぞれのリクエスト処理後毎に 書き出すのではなく、いったんメモリに蓄えてから、 まとめてディスクに書き出すようになります。 この結果ディスクアクセスがより効率的になり、 高いパフォーマンスの得られるシステムもあるでしょう。 このディレクティブはサーバ全体で一度だけ設定できます; バーチャルホストごとに設定することはできません。

このディレクティブは実験的なものですので、 使用する際は注意してください。

ということで、やっぱり気になるのが、「このディレクティブは実験的なものですので、 使用する際は注意してください。」というメッセージ。
パフォーマンスがあがるかもしれないけど、実験的ステータスなので、自己責任でということだと思う。
まあ商用サービスには使えなさそうだが、個人ユースには使えそう。
以下、参考までに。
apacheにおいて同時接続数(MaxClients)をいくつに設定すべきか?

できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応 (できるPROシリーズ)
辻 秀典 渡辺 高志 鈴木 幸敏 できるシリーズ編集部
インプレスジャパン
売り上げランキング: 92,600
スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です