2018年4月27日金曜日

apache で立ち上げたWebサーバで帯域の制御を行う

こんばんわ

なんかとても久しぶりの書き込みになってしまいました。先月CYTUSIIというゲームを始めてから週末はそればっかりやっていて、他のことが結構おろそかになってしまいました。こんなにゲームをやることは久しぶりです。前作のCYTUSではこんなに毎日毎日やらなかったですが、今回のCYTUSIIはなんだかやりやすいのか、難易度の設定が自分にちょうどいいのか、なんだか続けてしまっています。

それはそうと、1ヶ月ぶりに書き込みしたらSeesaa のUIがすごく変わっていてびっくり。よく確認していないのですが、設定とかそういう奴は引き継がれているんですよね。きっと。久しぶりだということと新しいUIということで何かミスがあるかもしれませんがそれはご愛嬌ということで。。

いつものごとく少し前置きが長くなってしまいましたが本題です。

apache httpd でweb サーバを起動していて、ファイルのダウンロードなんかをさせようとしたら、目一杯通信してしまうのである程度のところで制御したいなと思ったりします。そんな時にどうやるかという話です。

1.mod_bw をインストールする
apache に mod_bw というモジュールを追加すると、使用する帯域の制御ができるようになります。通常通りに以下のようにコマンドを実行します。

yum install mod_bw

2./etc/httpd/conf.d/mod_bw.conf にモジュールのロードと各種設定を行います。
/var/www/html/download 以下にあるファイルをダウンロードする際に帯域制限されるようにする場合でいかに例を示します。

例1:
・1セッションあたり50000Byte/s
・最大接続数2として3つ目でエラー
50000Bytes/s を2セッションまで。最大100000Bytes/sまでになります。

LoadModule bw_module modules/mod_bw.so
<IfModule mod_bw.c>
<Directory "/var/www/html/download/*" >
BandWidthModule On
ForceBandWidthModule On
BandWidth all 50000
MaxConnection all 2
</Directory>
</IfModule>

例2:
・トータルで利用できる帯域が50000Bytes/s
・接続が増えれば増えるほど 50000Bytes/s を利用者で分け合う。
例えば10人繋がると一人当たり5000Bytes/sになります。
MinBandWidth all 0 とすると最小は256Bytes/sになります。
100人繋がると一人あたり500Bytes/sとなるようです。
200人以上繋がった時どうなるのかは試していないです。。。。そのうちやります。

LoadModule bw_module modules/mod_bw.so

<IfModule mod_bw.c>
<Directory "/var/www/html/download/*" >
BandWidthModule On
ForceBandWidthModule On
BandWidth all 50000
MinBandWidth all 0
</Directory>
</IfModule>

ちなみに、デバッグを行う場合は
LogLevel=debug

です。mod_bw.conf の例にBandWidthDebugというあたかもデバックできそうなオプションがありますが、私が利用したmod_bwのバージョンではそのコマンドはサポートされていないようでした。LogLevel=debugとするとmod_bw のデバッグメッセージがapacheのログに出力されるようになりました。

やって見てください。



0 件のコメント:

結局 Kindle にケースを買いました。

 こんばんわ 私、最近ほとんど外出しなくなったのですが、妻の買い物に一緒に行って、ぼけーっと待っていたり、病院に行ってぼけーっと待っていたりする機会が多くなり、なんなら家でもボケーっとしていることが非常に多くなったためか、Kindleの出番が結構ありそうです。 前回、タブレットで...