40名で一斉アクセスした時のエラーについて

Re: 40名で一斉アクセスした時のエラーについて

- Haruhiko Okumura の投稿
返信数: 15
特殊ケースみたいなので本で解決しないかもしれませんが,お読みいただければありがたいです。

いまだにProxyなんて皆さん使っているんですね。黎明期のころはみんなDeleGateを使い,その後Squidに乗り換え,ダイナミックなコンテンツが増えるにつれ,害になることが多いのでproxyは止めたところが多いのではないかと思っていました。
Haruhiko Okumura への返信

Re: 40名で一斉アクセスした時のエラーについて

- Tatsuya Shirai の投稿

 学内の大半のPCは個別のグローバルIPアドレスを持っているのですが,直接,外部への接続を行わず,共通のProxyサーバを介して接続しています(これはBlackJumboDog(BJD)ではなく,きちんとしたサーバです).学内ネットワーク(共有フォルダ等)を外部に晒したくないなどの理由だと思います.一部からは”過保護だ”という意見もありますが,コンピュータのスキルの格差は物凄く大きいですからね.
 さらに当方の研究室の学生用PCは研究室内に設置したProxyサーバ(これはBJD)を介して学内ネットワークに接続し,HTTP手順のみを通しています.学内ネットワークに直接接続して,なにか問題が発生する(成績情報などの漏洩)と怖いというのが理由です.学生のPCからは2つのProxyサーバを介する形になります.

 あまり詳しくないので(:それではいけないのですが...)間違っているかも知れませんので,その際にはアドバイスをお願いします.”Proxyを止める”ということは,直接,インターネットに接続する,ということでしょうか?

#近頃は,Windows上で動くSquidもあるのですね.ちょっと怖いので使うつもりはありませんが.

Tatsuya Shirai への返信

Re: 40名で一斉アクセスした時のエラーについて

- Haruhiko Okumura の投稿
直接ではなくNATなどを介するということです。

固定のグローバルIPアドレスを設定している場合は,ルータの設定を少し変えれば,内から外は行けるけれど逆は駄目(外部に対してサービスしているマシンはそのポートだけ空けておく)というふうにできます。

Squidの類は,キャッシュするので同じコンテンツをみんなで見る場合には速くなりますが,ダイナミックなコンテンツの場合はこれが仇となります。また,更新したのに古いものが見えてしまうといった事故もよくありました。ただBJDというものについてはよく知りません。
Tatsuya Shirai への返信

Re: 40名で一斉アクセスした時のエラーについて

- Tatsuya Shirai の投稿

 了解しましたウインク

 BJDはかなり昔,WinProxyという名前だったと思うのですが,海外に同名の商品が存在したため改名したという記憶があります.Windows用の国産Proxyサーバとしては古参でありながら,いまでも機能の拡張とバグ修正を継続的に行っていますので,比較的安心して使用しています.HTTPサーバ等々の各種サーバ機能を取り込んできましたので,SOHOなどのオフィスでの利用には便利そうです(私はその機能の大半を使用していませんが).実はWebのキャッシュ機能も無効にしてありますウインク.上流のサーバのキャッシュにお任せしているのと,IEのキャッシュだけでも振り回され続けていますから!

 アクセスログの保存,利用者の制限,アクセス先の制限などが利用目的ですね.

Tatsuya Shirai への返信

Re: 40名で一斉アクセスした時のエラーについて

- Haruhiko Okumura の投稿
> アクセスログの保存,利用者の制限,アクセス先の制限などが利用目的ですね.

なるほど,それはなっとくできます。私も昔ですが学生機から明らかにまずいところへのアクセスをSquidで禁止していました。そのころは上流も細かったし,学生が大きい画像をあまり見ると先生方の研究に差し支えがありました。

しかし,アクセスログを見ると,先生のマシンからもそういうところを延々と閲覧しているのがわかって,見て見ぬ振りするのがたいへんでした。^^;

WWWがWorld Wide Waitと言われていた回線の細い時代でした。雑談すみません。
Haruhiko Okumura への返信

Re: 40名で一斉アクセスした時のエラーについて

- Yuuichi Yamaguchi の投稿
さきほど、
【Moodle入門 オープンソースで構築するeラーニングシステム】が届きました。
早速、目を通しました。
現在私が直面している「40名で一斉アクセスしたときのレスポンスタイムの遅さ」について、考えながら、飛ばし読みしました。
そこで、136ページに、
php.iniのmemory_limitを16Mに変更するように書いてありました。
また、
あまり大きくするとアクセスが多くなった場合にメモリの消費量が大きくなって、
サーバのレスポンスが低下するので、大きくしすぎるのも好ましくありません。
と書いてありました。

やはり、私の現在のように、
同一セグメント内に設置したmoodleサーバに40名一斉アクセスさせるという
場合にも、php.iniのmemory_limitは16Mでよろしいのでしょうか?

学校にサーバを置いてきてしまっているので、いますぐには確認できないのですが、
たしか、php.iniのmemory_limitはかなり大きい値(512Mか256M)に変更してしまった記憶があります。

また、学校にいって、16Mに変更して、動作確認を行ってみます。


Yuuichi Yamaguchi への返信

Re: 40名で一斉アクセスした時のエラーについて

- Yuuichi Yamaguchi の投稿
さきほどの書き込みの続きです。
php.iniのmemory_limitについて、
http://docs.moodle.org/ja/%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9#.E3.82.A6.E3.82.A7.E3.83.96.E3.82.B5.E3.83.BC.E3.83.90.E3.83.91.E3.83.95.E3.82.A9.E3.83.BC.E3.83.9E.E3.83.B3.E3.82.B9
上記URLには下記のように書いてありました。
> ご利用のMoodleが1.7より以前のバージョンの場合、
> php.iniの「memory_limit」を確認して、16Mに減らしてください
> (詳細はこのフォーラムディスカッションをご覧ください)。
> Moodle 1.7以降では、「memory_limit」を40Mに設定することをお勧めします。
これを読むと、memory_limitは40Mにする必要があると思いました。
40Mに変更して動作確認してみようと思います。

また、
【PHPアクセラレータ】というものを167ページを読んで知りました。
金城学院大学で利用されているPHP Acceleratorというモジュールを調べましたら、
私の使っているOS(FreeBSD)でも使えるPHPアクセラレータだそうなので、
やってみようと思います。
Yuuichi Yamaguchi への返信

Re: 40名で一斉アクセスした時のエラーについて

- Yuuichi Yamaguchi の投稿

今日、php.iniのmemory_limitを40Mに変更しました。

PHP Acceleratorをやってみましたが、どうやらPHP5には対応してなさそうでしたので、

eacceleratorというものを使ってみました。

# tar zxvf eaccelerator-0.9.5.2.tar.gz

# cd eaccelerator-0.9.5.2

# locate phpize これでphpizeの場所をさがして、

# /usr/local/bin/phpize eacceleratorを解凍したディレクトリ内に移動して実行

# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config  (これを一行で実行。php-configの場所を間違えずに)

# make

# make isntall ここでeaccelerator.soの場所を確認する

# ls /usr/local/lib/php/20060613/eaccelerator.so

次にphp.iniの最下行に次の行を追記します。

//eaccelerator wo settei sitayo.
zend_extension="/usr/local/lib/php/20060613/eaccelerator.so"
eccelerator.shm_size="16"

eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"


これで、40名一斉アクセスを、少しだけ動作確認しましたら、少しはマシになったようです。

Yuuichi Yamaguchi への返信

Re: 40名で一斉アクセスした時のエラーについて

- Yuuichi Yamaguchi の投稿

eacceleratorを使うことによって、40名一斉アクセスするクライアント40台と同じセグメント内にmoodleサーバを設置した場合は、なんなく動作するようになりました。これまで2クラスで動作確認しましたが、ログイン時がもっとも同時にアクセスされるためか、一番重いだけで、ほかの動作の時は、ストレスがあまりないようです。

そこで、このセグメントからネットワークで外へ出る時に通るBlackJumboDogのプロキシ機能におけるキャッシュを利用しない設定に変更した上で、このサーバをもう一度自宅へ持ち帰りました。自宅においたmoodleサーバへ学校から40名一斉アクセスさせましたら、やはりログイン画面や、ログイン処理の後への画面がなかなか表示されません。3~5分程度待って、エラーでした。というクライアント機もけっこうありました。ただし、個々のエラーの出たクライアントにキーボードのF5キーでリロードすると、すぐに正しい画面が表示されたりします。

この現象からやはり、Y!BBの

> 下り 最大8Mbps > 上り 最大0.9Mbps > と下記URLに記載されていました。 > http://bbpromo.yahoo.co.jp/campaign/discount1575/index.html > 「最大」と記述されているので、実際に上りの回線速度は、 > もっと遅いと思われます。 > > やはり、学校内に持ち込むほうがいいでしょうか? > また、40名いっせいに生徒に使わせるには、 > 最低でも、どれくらいの速度が必要なのでしょうか? この回線が問題なのかなぁと予想しています。 この回線速度で、40名一斉アクセスでもストレスなく動作したという事例等がありますでしょうか? 回線の速度アップも検討してみます。
Yuuichi Yamaguchi への返信

Re: 40名で一斉アクセスした時のエラーについて

- Haruhiko Okumura の投稿
学校内(あるいは高速な環境)でBlackJumboDogを利用した場合というのは試されていないのですね。

ログイン時だけトラフィックが多いわけではなく,おかしいですね。

ログイン時にhttpsにする設定にしてあると(そのほうが望ましいのですが)ログイン時だけ重いという説明になるかもしれません。
Yuuichi Yamaguchi への返信

Re: 40名で一斉アクセスした時のエラーについて

- Tatsuya Shirai の投稿

 YahooBB!とMoodleのサーバは直接,接続されているのでしょうか?

 特に根拠があるわけではありませんが,五月女さんが書かれていますように,もしYahooBB!のADSLモデムにブロードバンドルータを接続している場合に,このルータが同時アクセスに耐えられていない(ADSLモデムかも知れませんが)のかも知れません.もし御自宅に複数台のPCがあるためにブロードバンドルータを介して接続しているのであれば,試しにADSLモデムに直接,MoodleのサーバPCを接続してみては如何でしょう.

 ADSLモデムがどの程度の数の同時アクセスに耐えられるのかは,調べる方法がないでしょうかねぇ.回線速度だけとは考えにくいです.

Tatsuya Shirai への返信

Re: 40名で一斉アクセスした時のエラーについて

- Yuuichi Yamaguchi の投稿

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

(1)学校内(あるいは高速な環境)でBlackJumboDogを利用した場合

(2)Yahoo!BBのADSLモデムにルータを接続しているので、そのルータの設定の見直しおよびルータを介さず直接ADSLモデムにmoodleのサーバPCを接続した場合

この二つを実験してみようと思います。

さきほどの授業で40名アクセスを実施してみましたが、同時にアクセスするタイミングでは、レスポンスも遅く、遅れた生徒に再度リロードする場合は、うまく表示されました。このレスポンスの改善のため、上記2点のアドバイスで、障害を切り分けて、原因を解明していきたいと思います。

Yuuichi Yamaguchi への返信

Re: 40名で一斉アクセスした時のエラーについて

- Yuuichi Yamaguchi の投稿
(2)について,自宅にて接続状況の確認をしてみました。
まず,ブロードバンドルータはWN-G54/R2という製品です。
しかしこのルータは,よく考えると,ハブとしてしか使っていなかったです。
いちおう,
このルータを介した接続スピードと
Yahoo!BBのADSLモデムに直接差した接続スピードを
http://speedchecker.bbtec.net/ こちらのURLでチェックした結果を報告します。
上記いずれの場合もほとんど結果は変わりませんでした。
下り通信速度
(ダウンロード・スピード)
6198 Kbps
上り通信速度
(アップロード・スピード)
558 Kbps
という結果でした。何度かチェックしましたが,だいたいこれぐらいのスピードでした。
上りは500kbps程度です。やはり遅いです。

また,Yahoo!BBのADSLモデムであるトリオモデム3-Gの設定を確認しましたが,同時接続数の制限等といった項目はありませんでした。
Yuuichi Yamaguchi への返信

Re: 40名で一斉アクセスした時のエラーについて

- Tatsuya Shirai の投稿

 速度というよりも同時アクセスが問題かなぁと考えています.
 あまり詳しくないのですが,外部からの侵入を試みるアクセスやDoS攻撃のようなものを防ぐための機能をブロードバンドルータは内蔵していますよね.これらの機能が外部からの同時アクセス(御家庭でのインターネット閲覧という利用状況を想定すると異常事態)を検知して排除していたり,あるいは想定以上のアクセスに処理能力が追いついていかないなど.40名が同じIPアドレスで同時アクセスすることがブロードバンドルータにとっては多数のIPアドレスからアクセスされるよりも安全なのかどうか?

 なお,WN-G54/R2のファームウェアは現在,1.02というバージョンのようです.
 http://www.iodata.jp/lib/product/w/1344_winxp.htm

ファームウェアをバージョンアップすることで無線LAN部分の障害(頻繁に切断される)が直った反面,別の問題が発生した方もいるようですので,バージョンアップは慎重に.(ダウングレードできるならば問題ないのですが)

 先日マザーボードのBIOSのアップデートに失敗して痛い目をみたばかり悲しいですので,できればファームウェアのアップデートはお勧めしてくありません.そこでブロードバンドルータを介さずにADSLモデムと直接繋いで見ては?と考えた次第です.

Tatsuya Shirai への返信

Re: 40名で一斉アクセスした時のエラーについて

- Yuuichi Yamaguchi の投稿

あれからいろいろ検証してみました。

そもそも、生徒40台のセグメントから一斉にYahoo!JAPANにアクセスしても、レスポンスがかなり遅いです。
moodleのサーバに原因があるというより、学校のネットワークが問題であるように思いました。
(1)学校内(あるいは高速な環境)でBlackJumboDogを利用した場合
どうやら、私の学校には生徒用セグメントから外に出るには、 BlackJumboDogのほかに、Microsoft ISA Server 2004というファイヤーウォール兼プロキシサーバを介していることがわかりました。
生徒40台のセグメント → BlackJumboDog → Microsoft ISA Server 2004 → moodleのサーバ
というネットワークで、40台一斉アクセスしても、レスポンスが遅かったです。
BlackJumboDogの設定をいろいろと調べて、同時にアクセスする数が多いときは、【同時に処理できるスレッド数】を大きい値にすればいいらしかったので、設定しましたが、それでもレスポンスの改善につながりませんでした。
次は、Microsoft ISA Server 2004の設定を見直してみようと思っています。
Yuuichi Yamaguchi への返信

Re: 40名で一斉アクセスした時のエラーについて

- Yuichi Saotome の投稿
五月女です.

この手の問題は,考えられる限りすべての原因を書き出し,それを元に切り分けを行い,
怪しい順に優先度をつけて片っ端から片付けていくしか無いと思います.

先の例に挙げた私の時も,正直ハブが原因になるなんて思ってもみていませんでしたが,最後の最後にチェックしたハブが原因でした.

#といっても市販のハブはよく飛ぶんですが,まさかエンタープライズ向けのハブが飛ぶとは・・・

根気強くがんばってください.