“技術者”としてのホリエモンが語るWeb開発とは?

スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷

実用 Apache 2.0運用・管理術

第4回 mod_deflateによるコンテンツの圧縮転送 

サーバのマシン性能は十分でも、コンテンツの転送時間がボトルネックとなってパフォーマンスが出ない場合がある。このようなときの対処法として、コンテンツの圧縮転送がある。(編集部)

鶴長 鎮一(book@tsurunaga.jp)
2005/10/7

 前回に引き続き、Apacheのパフォーマンスチューニングについて解説します。今回はナローバンドで効果を上げる、コンテンツ圧縮機能を取り上げます。

回線のボトルネック解消

 ブロードバンドが広く普及したとはいえ、携帯インフラなど依然ナローバンドが主流の分野もあります。そして、Webサーバ自身のパフォーマンスよりも、回線のボトルネックがレスポンスに大きく影響を及ぼすことがあります。例えば、ダイヤルアップで多くのユーザーがApacheに接続した場合、1つの接続が占有するCPU時間が長くなるため、同時接続数が増大する傾向にあります。

 このような場合は、限られた回線帯域を有効に利用するために、送信データの圧縮転送で状況の改善を図ります。Apache 1.xではmod_gzipモジュールがその役割を担っていましたが、Apache 2.0ではmod_deflateを利用します。

mod_deflateモジュールのメリット/デメリット

 mod_deflateモジュールを導入すると、コンテンツの転送量が減少するためネットワークへの負荷が低減できます。

 一方、デフォルトの設定では転送する全コンテンツに圧縮処理を行うため、CPU消費率が高くなります。また、mod_deflateモジュールは一度圧縮したものを圧縮した状態でキャッシュしないため、静的/動的にかかわらず、リクエストが発生するたびにコンテンツの圧縮を行うなど、あまり効率が良くありません。また、クライアントのWebブラウザによっては圧縮コンテンツを処理できず文字化けを起こすなどの不具合が発生することもあります。

 mod_deflateモジュールを導入するかどうかは、主に回線負荷とCPU負荷をてんびんにかけて判断することになります。しかし、CPU負荷以外にも上記のような不具合が発生する可能性があることも理解しておきましょう。本稿では、そうした不具合を発生させないようにWebブラウザの種類や圧縮対象コンテンツを限定する方法も併せて紹介します。

回線ボトルネックの見極め

 パフォーマンス悪化の原因が回線のボトルネックによるものか否か見分けるには、定期的にサーバのステータスを確認する必要があります。

 第3回の「起動プロセス/待機プロセスの状態を調べるには」で、Apacheのmod_statusを使用したプロセス数とその状態の確認方法を解説しました。プロセスの状態欄で「W」が多い場合、コンテンツの転送に時間を要していることが分かります。また、httpd.confを編集して「ExtendedStatus」を有効化することで、1秒当たりのリクエスト処理数を見ることができます。

ExtendedStatus On

 以下の画面のように、CPU稼働率に余裕があるなら、mod_deflateの導入効果が期待できます。

画面 「ExtendedStatus On」にしたApacheのステータス

 より詳細に状況を把握するため、リクエストごとにレスポンスを返すまでに要した秒数をログに出力させることもできます。httpd.confのLogFormatで、「%T」を追加するのです。LogFormatが複数ある場合は、CustomLogでどのLogFormatが有効なのかを確認します。

 「%T」の単位は秒です。そのため、転送に1秒かからなければ「0」と表示されます。HTMLのようなテキストコンテンツで0秒より大きな値が出力されるようなら、転送の部分にボトルネックが発生していると見なすことができます。

LogFormat "%h %l %u %t \"%r\" %>s %b %T" common ←ログフォーマット「common」の設定
CustomLog logs/access_log common ←「common」をログフォーマットとして使用
httpd.conf

XXX.XXX.XXX.XX - - [XX/Sep/2005:00:58:42 +0900] 0 "GET /XXX/XXXXX.html HTTP/1.1" 200 6278 0 ←1秒未満の場合
XXX.XXX.XXX.XX - - [XX/Sep/2005:00:59:02 +0900] 0 "GET /XXX/XXXXX.html HTTP/1.1" 200 8665 2 ←2秒かかっている
access_log

1/3

Index
実用 Apache 2.0運用・管理術
 第4回 mod_deflateによるコンテンツの圧縮転送
Page 1
 回線のボトルネック解消
  mod_deflateモジュールのメリット/デメリット
  回線ボトルネックの見極め
  Page 2
 mod_deflateモジュールのインストール
  RPMによるインストール
  ソースからインストール(Apacheに組み込む場合)
  ソースからインストール(DSOによる動的組み込みの場合)
 httpd.confの編集
  圧縮処理の制御
  Page 3
 mod_deflateの動作確認

連載 実用 Apache 2.0運用・管理術


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します
Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
@IT Sepcial
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Sepcial
ソリューションFLASH