Top過去ログ目次掲示板

作成日:2006年10月06日 作成:おやじ
掲示板で過去に質問された内容です。

No.6397 bw_modの接続数制限


No.6397 投稿時間:2006年10月06日(Fri) 08:44 投稿者名:山崎 URL:
タイトル:bw_modの接続数制限

Apache2.0系で帯域制限をしたい。のページを参考にbw_modを導入しました。
vinelinux3.2を使用しています。
同時接続数だけを制限したいのですが、
何故かBandWidthディレクティブで速度制限もしないと同時接続数制限が働いてくれません。
これはこちらの設定に不備があるんでしょうか?
<Location />
BandWidthModule On
MaxConnection all 1
</Location>
というように設定しているのですが。
BandWidthディレクティブで設定をすると、どんなに数字を大きくしても、
位置接続辺り800KB/s程度に制限されてしまうので、ちょっと都合が悪いです。
接続数制限だけをするというのはこのモジュールでは出来ないのでしょうか?


No.6398 投稿時間:2006年10月06日(Fri) 20:35 投稿者名:おやじ URL:
タイトル:HTTPにおける接続制限とは?

> 同時接続数だけを制限したいのですが、
> 何故かBandWidthディレクティブで速度制限もしないと同時接続数制限が働いてくれません。
> これはこちらの設定に不備があるんでしょうか?
> <Location />
> BandWidthModule On
> MaxConnection all 1
> </Location>
> というように設定しているのですが。
> BandWidthディレクティブで設定をすると、どんなに数字を大きくしても、
> 位置接続辺り800KB/s程度に制限されてしまうので、ちょっと都合が悪いです。
> 接続数制限だけをするというのはこのモジュールでは出来ないのでしょうか?

このモジュールは複数ユーザに均等なサービスを提供するためのもので、接続数を制限するものではありませんが、実質制限しているような動作はできると思います。FTPなら制御コネクションの概念があるので同時接続という意味はわかりますが、HTTPにおける同時接続とはどういう意味なのでしょうか? 通常なら一瞬で終わってしまうので、Apacheのキューにはほとんどたまらないと思うのですが?
HTTPでFTPのように大容量のデータを流しているのですか? そうでもなければ同時接続という考えが良くわかりません。こういう設定をすると、オープンなコンテンツではアクセス不能になることが頻発するのでは?
なお、上記の設定だけならリミッタはかからないはずなので800KB/sは回線等を含めた性能ではないのですか?
意味がないと思いますが、あえて設定するなら

BandWidth all 0

を追加してはどうですか?


No.6399 投稿時間:2006年10月06日(Fri) 22:34 投稿者名:山崎 URL:
タイトル:Re: HTTPにおける接続制限とは?

レスありがとうございます。

>HTTPでFTPのように大容量のデータを流しているのですか?
そうですね。
大きいファイルがありまして、それにアクセスが集中するとどんどん詰まってしまい、
終いにはメモリを使い切ってページの表示もおぼつかなくなってしまうので、ちょっと制限したいなと。

>こういう設定をすると、オープンなコンテンツではアクセス不能になることが頻発するのでは?
すいません、テスト用の設定を書いてしまいました。
実際には30くらいで制限したいと思っています。

>上記の設定だけならリミッタはかからないはずなので800KB/sは回線等を含めた性能ではないのですか?
モジュールを外してテストするとローカルで20MB/s位出ますので、ネットワークが律速になってる事は無いと思います。
上で書いた設定は、BandWidthディレクティブで速度を制限すると何故か接続数が1の時でも
800KB/s程度に制限されてしまうので、こういう風にしたいという設定です。

>意味がないと思いますが、あえて設定するなら
>BandWidth all 0
>を追加してはどうですか?
やってみましたが、それも接続数制限が働いてくれてないようです。
確認方法は単純に接続数制限を1にして、そこからファイルをダウンロードしている間にもう一度接続してみるという方法です。


No.6400 投稿時間:2006年10月07日(Sat) 06:50 投稿者名:おやじ URL:
タイトル:制限されてしまうという理由は全くわかりませんが・・。

> >HTTPでFTPのように大容量のデータを流しているのですか?
> そうですね。
> 大きいファイルがありまして、それにアクセスが集中するとどんどん詰まってしまい、
> 終いにはメモリを使い切ってページの表示もおぼつかなくなってしまうので、ちょっと制限したいなと。
>
> >こういう設定をすると、オープンなコンテンツではアクセス不能になることが頻発するのでは?
> すいません、テスト用の設定を書いてしまいました。
> 実際には30くらいで制限したいと思っています。
>
> >上記の設定だけならリミッタはかからないはずなので800KB/sは回線等を含めた性能ではないのですか?
> モジュールを外してテストするとローカルで20MB/s位出ますので、ネットワークが律速になってる事は無いと思います。
> 上で書いた設定は、BandWidthディレクティブで速度を制限すると何故か接続数が1の時でも
> 800KB/s程度に制限されてしまうので、こういう風にしたいという設定です。

20MB/s(20Byte×8bit=160Mbit/s)ということは、1000BASE-TXでも使用されているのですか?

>
> >意味がないと思いますが、あえて設定するなら
> >BandWidth all 0
> >を追加してはどうですか?
> やってみましたが、それも接続数制限が働いてくれてないようです。
> 確認方法は単純に接続数制限を1にして、そこからファイルをダウンロードしている間にもう一度接続してみるという方法です。

800KB/s程度に制限されてしまうという理由が全くわかりません。これがわからないと先に進めないかもしれませんが、少し気になるのは、MaxConnectionは同じBandWidthディレクティブとセットで記述する必要があります。

BandWidth all 0
BandWidth 192.168.0.0/24 10240
MaxConnection all 20
MaxConnection 192.168.0.0/24 5

テストしてみましたが、実行されている速度がBandWidthディレクティブの設定値以下だと制限は働きません。これは、bw_modは帯域制限するものであることから当然の結果で、単に接続数だけで制限するだけのものではないというこということです。
やりたいことを整理する、「システム全体がおかしくなるので、大きいファイルへの複数のクライアントからのアクセスをなるべく多くのユーザを受け付けてかつ極力速度を落とさずに制限したい。」ということですよね。ということは、接続数だけで制限するというのは考え方が少しおかしいような気がします。あまねくサービスを最大限均等に提供することと、リソース、この場合はメモリもありますが回線もあるのでそこを考慮することも重要ではないでしょうか?
一案は、「BandWidth all 0」ではなく回線実行速度の80%を設定し、MinBandWidthで複数来たときの制限を設け、+で遅くなったぶんユーザが滞留するのでMaxConnectionで制限する案です。但し、MinBandWidthは2クライアント以上での効く値ですがユーザが増えればその分積みあがってくるので、同時接続数との兼ね合いで決める必要があり必然的にかなり小さな値にならざるを得ません。でも、リソースがないのだからこれが順当と思いますし、これがおやじの使い方です。
他におやじがこの機能を入れているのは、おやじの場合、回線が初期型VDSLなのでアップリンクが10Mbit/sしかないため数MByte程度のデータを落とされると回線のリソースが数秒間使い切られてしまい、このときに他のユーザが自宅DNSが牽けなくなりHPにアクセスできない方が時々発生していました。これを防止するため、大容量コンテンツにリミッタを入れた経緯があります。
なお、大容量コンテンツはディレクトリを分けるか拡張子で分離し、それだけにリミッタ(みんな同じ速度になるように)と同時接続制限(リミッタと併せて回線容量に余裕を残す)をしますが・・・。
これが、おやじのところの実際の動かし方です。こうすれば、通常コンテンツはさくさく見えるし、他のサービスにも影響を与えませんから。
因みに、大容量データをダウンロードすることが目的なら、本来はHTTPではなくFTPを使うべきかと思います。プロトコルも適材適所で使うべきかと思います。


No.6406 投稿時間:2006年10月08日(Sun) 23:54 投稿者名:山崎 URL:
タイトル:Re: 制限されてしまうという理由は全くわかりませんが・・。

>20MB/s(20Byte×8bit=160Mbit/s)ということは、1000BASE-TXでも使用されているのですか?
LANカードはギガビットですね。

>MaxConnectionは同じBandWidthディレクティブとセットで記述する必要があります。
あー、やっぱりMaxConnectionだけだと駄目なんですか。

>「システム全体がおかしくなるので、大きいファイルへの複数のクライアントからのアクセスをなるべく多くのユーザを受け付けてかつ極力速度を落とさずに制限したい。」
そうですね。そんな感じだと思います。

>接続数だけで制限するというのは考え方が少しおかしいような気がします。
真面目にやるのなら確かにそうかもしれませんが、
所詮趣味でやってる事なので、折角だから回線を使い切ってみたいなという程度の考えですから。

mod_bwで接続数制限だけをするのは無理とのことなので、なにか別の方法を探してみます。
ありがとうございました。


No.6407 投稿時間:2006年10月09日(Mon) 05:55 投稿者名:山崎 URL:
タイトル:Re: 制限されてしまうという理由は全くわかりませんが・・。

一応ご報告しますと、
mod_cbandというのが見つかりましたので試してみました。
それも何故か設定値の遥か下の500KB/s位で制限されます。
bw_modがどうとかの話じゃないのかもしれません。


No.6408 投稿時間:2006年10月09日(Mon) 08:30 投稿者名:おやじ URL:
タイトル:ApacheのMaxClientsをいじれば制限できますが・・・

> 一応ご報告しますと、
> mod_cbandというのが見つかりましたので試してみました。
> それも何故か設定値の遥か下の500KB/s位で制限されます。
> bw_modがどうとかの話じゃないのかもしれません。

これはこれで、おかしいですね。結構厄介そうですね。システムから入れなおし?
なお、単純に接続数を制限するなら、ApacheのMaxClientsをいじれば制限できます。
ただ、接続数だけで規制すると分割ダウンローダや先読みするブラウザやツールを使われたり、おかしなロボット等々の同時アクセスで正常な人がアクセスできなくなってしまう危険性があります。



掲示板▲頁先頭