Apache HTTP ServerのBufferedLogsディレクティブは、マニュアルでexperimentalとされていたので今まで試していませんでした。BufferedLogsディレクティブを有効にすると、リクエストごとにログを出力せずに、いったんバッファに蓄えてまとめて出力するようになります。
マニュアルにはBufferedLogsディレクティブによってディスクアクセスが効率的になると書かれていますが、これが効いてくるのはむしろパイプ経由のログ出力です。ログがパイプに出力されて、パイプの反対側のプログラムが実行可能になる頻度が下がるからです。このところCPUが苦しかったので、有効にして軽くベンチマークを取ったところ、リクエスト/秒で3倍以上の性能向上が見られたので、そのまま運用することにしました。
昨日Firefoxのアップデートがあったので、さっそくBufferedLogsの効果を見ることができました。前回のアップデートに比べるとアクセスは少なかったのですが、ピーク時で2.7Gbps、12,400コネクション、790リクエスト/秒を、パイプ経由のログ出力を一つも止めず、CPUを100%使い切らずに乗り越えることができました。前回は同じ状況で、パイプ経由のログ出力を一つ止めていても、CPUを100%使い切り、ロードアベレージが数千だったことを考えると、BufferedLogsは効果絶大だったと言えるでしょう。
0 件のコメント:
コメントを投稿