Apacheモジュールで帯域制限

あるサーバで1日の転送量が70GByteを超えてますので下げてください、というお達しがプロバイダから届きました。
そのプロバイダの転送量は1日30Gbyteまでは許容範囲とのことなので、Apacheで帯域に制限をかけることに。

帯域制限をかけるモジュールとしてメジャーなのが「mod_bw」。
これを使用します。

1.mod_bwのインストール

# ソースをダウンロードするフォルダ移動
cd /usr/local/src

# ダウンロード
wget http://apache.ivn.cl/files/source/mod_bw-0.8.tgz

# 解凍
tar xvfz mod_bw-0.8.tgz

# 解凍したフォルダの中へ移動
cd mod_bw

#apxsでインストール
apxs -i -a -c mod_bw.c

もしapxsが入っていない場合は事前にインストールをする必要があります。
yum -y install httpd-develでインストールできます。

以上でモジュールのインストールは完了です。

2.制限する値について

さて、1日30Gbyteまでということは制限はどのくらいにすればいいかと言いますと

まず30Gbyteをbyteに換算します。

30Gbyte = 30 * 1024 * 1024 * 1024 = 32212254720byte

と出ます。

次に1日を秒数に換算すると

1日 = 60秒 * 60分 * 24時間 = 86400秒

です。

転送量を秒数で割ると

32212254720byte / 86400秒 ≒ 372827byte/秒

ちょっと値が大きくなってしまったのでK(キロ)に換算し直すと

372827 / 1024 ≒ 364Kbyte/秒

となります。

つまり、毎秒364Kbyte未満の転送量に押さえておけば30Gbyteを超えることはないと言うわけです。

ちなみに転送量を30Gbyteまでとしている各プロバイダが帯域制限をかける際によく出てくる制限値である「2.8Mbps」というのをbyteからbitに換算すると

2.8Mbit/秒 = (2.8 / 8) ≒ 0.35Mbyte/秒

これをK(キロ)に換算すると

0.35Mbyte/秒 = 0.35 * 1024 ≒ 358Kbyte/秒

ということで、上記で算出した364Kbyte/秒とほぼ同じ値です。
つまり、プロバイダの帯域制限というのは30Gbyteを超えない速度に制限するということですね。

3.mod_bwの設定

制限する値を出せたので設定に移ります。
httpd.confに以下のように制限をかけたい範囲にmod_bwの設定を記述します。
<Directory "/var/www/html">
  #BandWidth
  <IfModule mod_bw.c>
    BandWidthModule On
    ForceBandWidthModule On
    BandWidth all 300000
  </IfModule>
</Directory>

BandWidthの設定はbyte/秒で指定します。
今回はちょっと余裕を持たせておよそ300kbyte/秒にしました。

以上でmod_bwの導入及び設定の説明は終わりです。

何か間違ってるとこもあるかも知れないので変な箇所がありましたら優しくご指摘いただければと思います(^^;

そう、例えるなら美人女子大生家庭教師のように優しくね!
そしてマウスをつかんでいる私の右手を白魚のような手でそっと包み、「ホラ、ここはこうでしょ☆」と甘い吐息を耳に吹きかけ、否応なく異性を意識してしまう私に気づいた彼女は柔らかい笑みを浮かべながらそっとブラウスのボタンに手をかけ(ry

(省略されました。続きを読むにはワッフルワッフルと書き込んでください)

大阪の江坂でウェブ制作をしている、インフラもシステムもデザインもディレクションもできるエンジニア。 広く浅く薄っぺらくですが(笑)

Leave a reply:

Your email address will not be published.