Top過去ログ目次掲示板

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

No.7848 bw_modの設定についてお伺いしたい事がございます


No.7848 投稿時間:2009年01月26日(Mon) 18:14 投稿者名:sandayu URL:
タイトル:bw_modの設定についてお伺いしたい事がございます

お世話になっております。sandayuと申します。
mod_bwの設定を参考にさせていただいております。

そこで、一点お伺いしたい事がございます。

下記のhttpd.confのような形で設定を行い、
コネクション数(ためしに1で)でエラーページに転送をさせようとおもっているのですが、
うまく510のコードで転送が行えません。
(apacheのログにも200ばかりが表示されます)

なにかしらミスを犯していると思われるのですが、なにか間違いや、注意する点等ございますでしょうか?

バージョン:Apache/2.2.9 (Unix)
     :mod_bw-0.8

[httpd.conf]
LoadModule bw_module /usr/lib/httpd/modules/mod_bw.so

<VirtualHost *:80>

、、、、、

BandWidthModule On
ForceBandWidthModule On
BandWidth all 0
MaxConnection all 1

BandWidthError 510
ErrorDocument 510 http://hgoe.hoge.hoge/err/503.html
</VirtualHost>


[access.log]
,,,,
xxx - - [26/Jan/2009:17:55:52 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx - - [26/Jan/2009:17:55:52 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx- - [26/Jan/2009:17:55:52 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx - - [26/Jan/2009:17:55:52 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx- - [26/Jan/2009:17:55:52 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx - - [26/Jan/2009:17:55:52 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx - - [26/Jan/2009:17:55:52 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx - - [26/Jan/2009:17:55:52 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx- - [26/Jan/2009:17:55:53 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
xxx - - [26/Jan/2009:17:55:53 +0900] "GET /bw.php HTTP/1.0" 200 87 "-" "ApacheBench/2.0.40-dev"
,,,

[apache bench]
# ab -n 100 -c 100 http://hoge.hoge.hoge/bw.php

Server Software: Apache/2.2.9
Server Hostname: hoge.hoge.hoge
Server Port: 80

Document Path: /bw.php
Document Length: 87 bytes

Concurrency Level: 100
Time taken for tests: 1.561268 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 27800 bytes
HTML transferred: 8700 bytes
Requests per second: 64.05 [#/sec] (mean)
Time per request: 1561.268 [ms] (mean)
Time per request: 15.613 [ms] (mean, across all concurrent requests)
Transfer rate: 17.29 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 85 219 93.9 218 385
Processing: 414 637 206.9 539 1175
Waiting: 410 636 207.3 537 1174
Total: 499 857 276.4 777 1560


以上、よろしくお願いいたします。


No.7851 投稿時間:2009年01月26日(Mon) 21:39 投稿者名:おやじ URL:
タイトル:まずは過去ログを一読してくれませんか?

同じような話と思いますので、下記を一読していただけませんか?

http://www.aconus.com/~oyaji/bbs/past/0010/B0006397.html


No.7854 投稿時間:2009年01月27日(Tue) 11:04 投稿者名:sandayu URL:
タイトル:Re: まずは過去ログを一読してくれませんか?

> 同じような話と思いますので、下記を一読していただけませんか?
>
> http://www.aconus.com/~oyaji/bbs/past/0010/B0006397.html

> 同じような話と思いますので、下記を一読していただけませんか?
>
> http://www.aconus.com/~oyaji/bbs/past/0010/B0006397.html

返信ありがとうございます。
すみません、過去ログを確認しておりませんでした。

一度じっくり読まさせていただきます。
そのご、再度ご質問等させていただければと思います。

それと、一点、下記についてなのですが、
>HTTPにおける同時接続とはどういう意味なのでしょうか?

「接続クライアント数」というイメージでmod_bwの使用を想定しておりました。

最初、自分もcbandをインストールして試したいたのですが、
その際に接続数での制限がうまくいきました。
接続数1とすると、同じ時間内にブラウザで2回アクセスすれば片方が
混雑ページへ転送されるイメージです。

ただ、そのせいなのか表示がおそくなったり、複数のバーチャルドメインに設定すると
致命的に遅くなってしまったりとで今回その他のソフトを探していました。
(cbandの問題については、うまくインストールできていなかったか、自分の設定に問題がなにかしらあった可能性もあります。→多分設定が間違っているのかも・・・・)

それと、
やりたい事というのは、システムで処理が追いつかないアクセスに対しては
混雑ページに飛ばしたいというものなのですが、bw_mod等関係無しに
なにかアイデア等ございましたら、アドバイスの方よろしくお願いいたします。


No.7858 投稿時間:2009年01月28日(Wed) 20:32 投稿者名:おやじ URL:
タイトル:素人考えですが・・・。

> それと、一点、下記についてなのですが、
> >HTTPにおける同時接続とはどういう意味なのでしょうか?
>
> 「接続クライアント数」というイメージでmod_bwの使用を想定しておりました。
>
> 最初、自分もcbandをインストールして試したいたのですが、
> その際に接続数での制限がうまくいきました。
> 接続数1とすると、同じ時間内にブラウザで2回アクセスすれば片方が
> 混雑ページへ転送されるイメージです。
>
> ただ、そのせいなのか表示がおそくなったり、複数のバーチャルドメインに設定すると
> 致命的に遅くなってしまったりとで今回その他のソフトを探していました。
> (cbandの問題については、うまくインストールできていなかったか、自分の設定に問題がなにかしらあった可能性もあります。→多分設定が間違っているのかも・・・・)
>
> それと、
> やりたい事というのは、システムで処理が追いつかないアクセスに対しては
> 混雑ページに飛ばしたいというものなのですが、bw_mod等関係無しに
> なにかアイデア等ございましたら、アドバイスの方よろしくお願いいたします。

おやじは、サーバ関係の専門家ではないので間違っているかもしれませんが・・。
基本的にシステムの処理が追いつかないときの対処をそのシステムが稼動しているところでやることに矛盾(アップアップなのに更に余計な仕事をしてアップアップになるとうスパイラル状態)があるのではないかと思います。
やるなら、その処理をしても100%にならないような条件で対応が必要では?
まず、そのシステムのボトムネックがどこにあるか?を考え、それもとに対策を考えないと駄目だと思います。そうしないとデッドロックするはずです。
一般的に、ボトムネックになりそうなのは、回線、CPU性能、メモリ量、HDDのアクセス等、影響を与えそうなのは、アクセス数、コンテンツサイズ、ソフトの性能など・・。
おやじの環境でのボトムネックは、アップリンク10Mbps(規格上の話で実際は8Mbps程度か?)の回線なので、これをどう使うかを考えればいいため、速度と同時接続数を制御できるmod_bwがぴったりだったということです。回線がGigaでもない限り最近のハードならほぼ回線速度ネックと思いますが・・・。(非常に小さいコンテンツを大量にある場合は???)
なお、前スレにも書きましたが、mod_bwは名前のとおり帯域を制御するためのモジュールです。
ある瞬間を見た時に、接続されているセッションが使用している帯域の総和が回線速度を上回らなければよいため、mod_bwでは指定された条件下でコンテンツの配送速度をコントロールしつつ同時接続を制御しています。
こいう考え方なので、前スレにも書きましたが、md_bwは同時接続数のみで制御するものではなく、帯域もセットで制御する必要があります。cbandも似たような考えと思いますが、この考えは、非常に理に適っていると思います。接続数だけだとほとんど制御できないのでは?
実際には、同時接続と帯域の積を回線速度の80%ぐらいで押さえ、混雑ページは他の規制条件を設定(例えばそのディレクトリは規制しない等)してあげればある程度使えるのではないかと思います。


No.7866 投稿時間:2009年02月03日(Tue) 15:21 投稿者名:sandayu URL:
タイトル:Re: 素人考えですが・・・。

> > それと、一点、下記についてなのですが、
> > >HTTPにおける同時接続とはどういう意味なのでしょうか?
> >
> > 「接続クライアント数」というイメージでmod_bwの使用を想定しておりました。
> >
> > 最初、自分もcbandをインストールして試したいたのですが、
> > その際に接続数での制限がうまくいきました。
> > 接続数1とすると、同じ時間内にブラウザで2回アクセスすれば片方が
> > 混雑ページへ転送されるイメージです。
> >
> > ただ、そのせいなのか表示がおそくなったり、複数のバーチャルドメインに設定すると
> > 致命的に遅くなってしまったりとで今回その他のソフトを探していました。
> > (cbandの問題については、うまくインストールできていなかったか、自分の設定に問題がなにかしらあった可能性もあります。→多分設定が間違っているのかも・・・・)
> >
> > それと、
> > やりたい事というのは、システムで処理が追いつかないアクセスに対しては
> > 混雑ページに飛ばしたいというものなのですが、bw_mod等関係無しに
> > なにかアイデア等ございましたら、アドバイスの方よろしくお願いいたします。
>
> おやじは、サーバ関係の専門家ではないので間違っているかもしれませんが・・。
> 基本的にシステムの処理が追いつかないときの対処をそのシステムが稼動しているところでやることに矛盾(アップアップなのに更に余計な仕事をしてアップアップになるとうスパイラル状態)があるのではないかと思います。
> やるなら、その処理をしても100%にならないような条件で対応が必要では?
> まず、そのシステムのボトムネックがどこにあるか?を考え、それもとに対策を考えないと駄目だと思います。そうしないとデッドロックするはずです。
> 一般的に、ボトムネックになりそうなのは、回線、CPU性能、メモリ量、HDDのアクセス等、影響を与えそうなのは、アクセス数、コンテンツサイズ、ソフトの性能など・・。
> おやじの環境でのボトムネックは、アップリンク10Mbps(規格上の話で実際は8Mbps程度か?)の回線なので、これをどう使うかを考えればいいため、速度と同時接続数を制御できるmod_bwがぴったりだったということです。回線がGigaでもない限り最近のハードならほぼ回線速度ネックと思いますが・・・。(非常に小さいコンテンツを大量にある場合は???)
> なお、前スレにも書きましたが、mod_bwは名前のとおり帯域を制御するためのモジュールです。
> ある瞬間を見た時に、接続されているセッションが使用している帯域の総和が回線速度を上回らなければよいため、mod_bwでは指定された条件下でコンテンツの配送速度をコントロールしつつ同時接続を制御しています。
> こいう考え方なので、前スレにも書きましたが、md_bwは同時接続数のみで制御するものではなく、帯域もセットで制御する必要があります。cbandも似たような考えと思いますが、この考えは、非常に理に適っていると思います。接続数だけだとほとんど制御できないのでは?
> 実際には、同時接続と帯域の積を回線速度の80%ぐらいで押さえ、混雑ページは他の規制条件を設定(例えばそのディレクトリは規制しない等)してあげればある程度使えるのではないかと思います。

返信ありがとうございます。

各ユーザー毎に設定した帯域が維持できない状態で、設定接続数を超えた
場合に503を出すのがベストだと思うのですが、

サーバーでプログラムを使用しておりまして、
回線的には問題なくても、システムの処理が間に
合わない可能性(CPU,MEMORY等が足りない)があり
(帯域をフル活用できるシステムでない事になりますが)、
接続レベルのみの物を探しておりました。

それと、システムの処理が追いつかない時に対処をするのではなく、
ある程度のバッファをもって事前に制限をかけようと思っています。

そこで、bw_modeでユーザー毎の帯域制限ではなく、バーチャルホストレベル
でできないかためしてみましたが、できなさそうな状態です。
これができれば、システムで耐え得るレベルまで帯域を減らす事ができるかと思いました
(本末転倒な考えかもしれませんが、サーバーの方は金額的に可能なレベルで
増強を行っております(WEBの冗長化や、メモリ増強等))。

なので、実はちょっと帯域制限をしたいというのと意味が異なっいるかもしれません。

回線的、システム的にサイトが正常な状態を維持できなくなる前に、
何かしらの対策が打てるような状態を作るのが目的となっております。

そこで、さらに調べていたのですが、mod_tsunamiという物を見つけました。
これはまさに自分がやろうとしていたもので、同時接続数で制御がかけられるようです。
ただ、Apache2系には対応していないようなので、実際にシステムに導入するかは
わかりませんが、試しに動かしてみた所なかなかスムーズに動いているようです。
かなり良い感じです。


No.7867 投稿時間:2009年02月03日(Tue) 17:22 投稿者名:stranger URL:
タイトル:Re^2: 素人考えですが・・・。

apache2 prefork MPM (デフォルト)の場合
動的サイト apache+PHPやapache+Perlなどでは
1プロセスあたり15~20Mメモリを使用します
apacheで使えるメモリの容量に応じて
MaxClients で同時に接続できるクライアント数を制限します
MaxClientsのデフォルトは256なのでメモリは3G以上必要になる
一度起動した子プロセスは、デフォルトでは制限なく居座るので
MaxRequestsPerChild を設定して
一定時間をおいて子プロセスをリフレッシュします
MaxRequestsPerChildのデフォルトは0で無制限

apacheに付属のabコマンドで、ローカル試験をしてみると
自分のサーバにどのくらい接続があるとエラーが出始めるか
ある程度推測できます

すでに設定済みだと思いますが、参考まで



掲示板▲頁先頭