« jQueryのパフォーマンス最適化に関するTips | メイン | いまさら、ディレクトリトラバーサルについて語ってみる »

Apache で特定のコンテンツへのアクセスに対して帯域制限しよう
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんばんは、最近自転車のライトを交換した naoya です。

今日は、Apache で特定のコンテンツへのアクセスに対して帯域制限する方法を紹介したいと思います。まず、特定のコンテンツの帯域を制限しようと思った背景から説明したいと思います。フォト蔵では、写真と動画をサポートしています。そのため、動画へのアクセスが増えると他の写真などへのコンテンツに対するレスポンスが悪くなってしまうことがあります。動画は、FLV 形式ですが比較的ファイルサイズが大きいものが多いため、FLV のみ帯域制限を行ってみることにしました。

まず、Apache で帯域制限できるモジュールについて調査しました。調査には、Software Design 2007年9月号をおもに参考にさせていただきました。

 

Software Design (ソフトウエア デザイン) 2007年 09月号 [雑誌]

 

Software Design (ソフトウエア デザイン) 2007年 09月号 [雑誌]

posted with amazlet on 07.11.15

技術評論社 (2007/08/18)

Software Design 2007年9月号では、いくつかの Apache の帯域制限できるモジュールが紹介されていたのですが、今回選択したモジュールは mod_bw です。

mod_bw を選択した理由は、次のとおりです。

  • バーチャルホストに対応している
  • 特定のコンテンツ (MIME) 別に設定できる
  • 帯域設定が柔軟にできる
  • Apache 2 系で動作する

それでは、mod_bw のインストール方法について説明します。

  1. mod_bw を公式サイトからソースコードをダウンロードします(現時点での最新版は 0.8 です)
  2. 展開してコンパイルします apxs -i -a -c mod_bw.c
  3. コンパイル後、mod_bw.so ファイルを /usr/lib/httpd/modules へコピーします

次に設定方法ですが、Apache の設定ファイル httpd.conf に、mod_bw を読み込むように、次の設定を追加します。

LoadModule bw_module          /usr/lib/httpd/modules/mod_bw.so

次に、FLV に対して帯域制限する前に、通常の Apache の設定では FLV に対する MIME タイプは設定されてないので、次の設定を追加します。

AddType video/x-flv .flv

次に実際の帯域制限ですが、例えば次のように追加します。この設定は、すべてクライアントに対して最大 1024 bytes/s の制限を行うという意味になります。この設定は、VirutalHost の中に追加します。

       BandWidthModule On
       BandWidth all 102400
       MinBandWidth all -1
       AddOutputFilterByType MOD_BW video/x-flv

最後に動作確認は、ab (Apache Bench) か、実際にファイルをダウンロードしながら正しく帯域制限が行われているかチェックします。

今回は、Apache で特定のコンテンツのみ帯域制限する方法について紹介しました。帯域には限りがあるので、サイトを訪れてくれたユーザに対して快適なサービスを提供していきたいですね。

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/1013

この一覧は、次のエントリーを参照しています: Apache で特定のコンテンツへのアクセスに対して帯域制限しよう:

» 帯域制限と接続数制限 - Apache from Shoulder.jp
apacheで帯域制限ならびに接続数制限を行う方法。 Apache/ 帯域制限 - mod_bw 接続数制限、帯域制限の他、ファイル種別(text/htm... [詳しくはこちら]

コメント

帯域を無制限にしたいけど、やり方がわかりません。

コメントを投稿


画像の中に見える文字を入力してください。