Apacheに帯域制限をかけよう

ここではApacheに帯域制限をかけてみましょう。
帯域制限とは、通信回線にスピード制限をかけるということです・・・分かりにくいですね。

LAN内にはサーバー機とクライアント機(普段お使いのメインマシン)が存在するとします。
また、お使いの回線はBフレッツ・光ファイバーとしましょう。
Bフレッツの回線速度は上下100Mbpsですよね(理論上の最大値ですが、ここでは本当に100Mbps使えると仮定しましょう)
この状態でHTTPサーバーからとある大きなファイルをダウンロードするユーザーがいたとします。
サーバーから見ればアップロードですが、もしここでサーバーが90Mbpsを使ってしまったらどうでしょう?
メインマシンはその間10Mbpsしか使えないことになります。

そこで帯域制限です。
帯域制限を使用することで、HTTPサーバーの回線速度を例えば10Mbpsまでしか出ないようにしてしまうのです。
そうすれば常にメインマシンは90Mbpsの速度を使えることになりますね。
ここで示したのはあくまでも例です。
実際には速度は100Mbpsも出ないですし、メインマシン側も10Mbps使えれば困ることはないでしょう。
それに常時サーバーが帯域を大きく使用するようなこともまずないですし・・・

第一、帯域制限をかけると不便するのはクライアントユーザーですから、帯域に余裕があるブロードバンドならば制限などかけない方がいいのではないでしょうか。回線速度が遅い方ほど使い方次第では有効となるでしょう。

前書きはこのへんにしておいて、実際に設定していきましょう。
まずは必要なモジュール、bw_mod.dllをIvn Projectより取得します。

WindowsのApacheで帯域制限

自分が利用しているApacheのバージョンで、Windowsのbw_modをダウンロードします。


WindowsのApacheで帯域制限

保存をクリックします。
保存先はmodulesディレクトリ、デフォルトでApacheをインストールした場合は
C:\Program Files\Apache Group\Apache2\modulesになります。

では、例によってhttpd.confを設定していきます。
適当な所に追加して書き込んでいきましょう。

LoadModule bw_module modules/bw_mod-2.0.54.dll

モジュールの読み込みです。

BandWidthModule On

ここをOnと書き込むことで帯域制限が有効になります。

BandWidth all 10240

BandWidth アクセス元 制限速度(Bytes/Second)
実際に帯域制限のスピードを指定します。
alで全てのアクセスを制限対象にします。他にはIPアドレス、ドメイン、ホスト名などでも指定できます。
10240は制限するスピードを示します。ただし単位はBytes/Secondです。
おおよそですが1Mbps=1000000Bytes/Secondになります。

LargeFileLimit .avi 500 10240

LaegeFileLimit 拡張子 ファイルサイズ(KByte/Second) 制限速度(Bytes/Second)
拡張子毎にサイズを指定し、設定したサイズを超えるファイルに関しては帯域制限をかけるといった方法もあります。
拡張子は" . "から始めて下さい。また*を用いることで全ての拡張子とすることもできます。(*の場合は" . "は不要)
ファイルサイズと制限速度の単位が違うことに注意して下さい。

MaxConnection all 20

MaxConnection アクセス元 同時接続数
同一クライアントからの同時アクセス数を制限することもできます。

使いそうな設定項目は以上です。
公式サイトには当然細かな設定項目が表示されているので読んでみるのも良いでしょう(英語ですが)
また、LoadModule bw_module modules/bw_mod-2.0.54.dllはそのまま書き込む必要がありますが、他の項目はすべてディレクトリ毎に設定することが可能です。
<Directory />
</Directory>
を使って、必要なディレクトリに設定して下さい。

以上です。お疲れ様でした。