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

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

- Yuuichi Yamaguchi の投稿
返信数: 38

今日の授業で、moodleに40名の生徒が一斉にアクセスしてみました。

moodleにアクセスする前に、apacheのBASIC認証をかましています。

40名全員がBASIC認証の画面はちゃんと出てきました。

そして、BASIC認証で終わった後、

http://hogehoge.com/moodle/login/

にアクセスしたら、表示されずにエラーとなる生徒が何名もいました。

ただし、きちんとmoodleのログイン画面が表示された生徒もいました。

そこで、apacheのログである/var/log/httpd-access.logを確認したら、

::1 - - [05/Feb/2008:12:29:33 +0900] "OPTIONS * HTTP/1.0" 200 - "-" "Apache (internal dummy connection)"

上記のようなログが残っておりました。

また、このmoodleを入れたサーバは、校外においてある自宅サーバです。

メモリは1.5GBなので、問題ないと思います。実際に40名がアクセス中に

リアルタイムにメモリの利用量を見ていましても、300MB程度でした。

ただ、さきほどのログにも残っていたのですが、生徒の40台のマシンが

自宅サーバにアクセスすると、本校の外側のIPつまり、同じIPでアクセスしています。

これが、表示不具合の原因なのでしょうか?

もし、これが原因ならば、サーバを校内の生徒が使う同一セグメント内に設置して

それぞれの生徒が異IPでアクセスできるようにしようと思っております。

また、今の学校には、生徒用セグメントから外へ出る前にブラックジャンボという

プロキシサーバを介しているそうなのです。コイツが邪魔している可能性もあるのでしょうか?

なにか、apacheのhttpd.confなど、変更すべき点がありましたら、

ご教授いただけないでしょうか?

なお、授業でこの不具合が起きたときには、

/var/log/httpd-error.logこちらにはエラーメッセージが残っていませんでした。

Yuuichi Yamaguchi への返信

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

- TATSUO MIWA の投稿
http.conf の
MaxRequestsPerChildの値をご確認ください。

@IT
http://www.atmarkit.co.jp/flinux/rensai/apache16/apache16b.html

2ちゃんねる
http://pc11.2ch.net/test/read.cgi/mysv/1185363093/
178番目~185番目あたりをご参考に。
TATSUO MIWA への返信

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

- Haruhiko Okumura の投稿
> MaxRequestsPerChildの値をご確認ください。

それを最初に確認すべきでした。^^;

ほかにもhttpd.confやphp.iniの設定についてはMoodleのサイトにいろいろ載っています。
Yuuichi Yamaguchi への返信

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

- Haruhiko Okumura の投稿
このメッセージは無関係のようです。
IPアドレスが同じこともまったく関係がないと思います(うちもそういうふうになっています)。
BASIC認証も関係ないはずですが,Moodleの認証に加えてBASIC認証をかけるのはまったく意味がないように思います。
ブラックジャンボというのはBlackJumboDogのことでしょうか。これはまったく利用経験がないのでわかりません。

Haruhiko Okumura への返信

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

- Yuuichi Yamaguchi の投稿

MIWA先生。OKUMURA先生。
お返事ありがとうございます。
> IPアドレスが同じこともまったく関係がないと思います(うち
ありがとうございます。やはり問題はサーバですね。
勉強してみます。
> BASIC認証も関係ないはず
> ブラックジャンボというのはBlackJumboDogのこと
はい。ご指摘いただいたBlackJumboDogです。


> http://pc11.2ch.net/test/read.cgi/mysv/1185363093/
> 178番目~185番目あたりをご参考に。
この2ちゃんねるを読みましたら、私と同様で
> アクセスが集中すると、レスポンスが極端に悪くなります。
> その悪く成った状態のログを見てみると以下のように複数行記載
と書いてありました。Apache2.2を私も使っています。

> http://www.atmarkit.co.jp/flinux/rensai/apache16/apache16b.html
こちらも読みました。Apacheのチューニングを勉強しながら、施す必要があると思いました。
この中で出てくる
KeepAliveTimeout
MaxKeepAliveRequests
MinSpareServers
MaxSpareServers
これらのディレクティブは、
/usr/local/etc/apache22/httpd.confに書いてありませんでした。
MaxSpareServers 45 と設定しました。

ただ、MaxClientsはサーバを構築したときに、手作業で150と設定してました。
でも、もう少し大きい値を設定すべきだと、この記事に書いてあったので、1500にしてみましたが、apacheの再起動時に256以下にしろというメッセージが出たので、50にしました。

> MaxRequestsPerChildの値をご確認
/usr/local/etc/apache22/httpd.confを確認しました。
MaxRequestsPerChildという文字列はありませんでした。
> サイトのアクセス数にもよるが、100から1000の間くらいで、適当な値を指定するといい
とありましたので、100にしておきました。

Timeout 60
でしたので、600に変更してみました。

これらのhttpd.confの設定の意味がいまいち、わかりにくいので、
また生徒にアクセスさせながら、topコマンドで、httpdプロセスやメモリ使用量を見て
みたいと思います。

> ほかにもhttpd.confやphp.iniの設定についてはMoodleのサイトにいろいろ載っています。
よく読んでみようと思います。ありがとうございます。

Yuuichi Yamaguchi への返信

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

- Yuuichi Yamaguchi の投稿

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
こちらでMoodleドキュメントの【パフォーマンス】について読みました。これにあわせて、
/usr/local/etc/apache22/httpd.confの設定を以下のように追記しました。

Timeout 60
MaxClients 200
ServerSignature Off
ServerTokens ProductOnly
MaxRequestsPerChild 100
MaxSpareServers 45
MaxRequestsPerChild 20
KeepAliveTimeout  5

また動作確認してみます。

Yuuichi Yamaguchi への返信

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

- Yuuichi Yamaguchi の投稿

再度、生徒に40名いっせいにアクセスさせましたが、まだエラーとなるクライアントがありました。

サーバをおいてる回線が自宅で、YahooBBのADSLの一番遅い回線を契約しています。おそらく1Mぐらいしか出ない回線なのですが、これも原因として考えられるのでしょうか?

結局、Moodle入門―オープンソースで構築するeラーニングシステム

という本を買うことにしました。

Yuuichi Yamaguchi への返信

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

- Haruhiko Okumura の投稿
ADSLですか。その1Mというのは下り方向でしょうか。上り方向はもっと遅いでしょうね(ADSLのAの意味を考えれば)。

サーバを学校の中に持ち込めないのでしょうか。
Haruhiko Okumura への返信

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

- Yuuichi Yamaguchi の投稿
Okumura先生
ご返信ありがとうございます。
1Mの具体的には・・・

下り 最大8Mbps
上り 最大0.9Mbps
と下記URLに記載されていました。
http://bbpromo.yahoo.co.jp/campaign/discount1575/index.html
「最大」と記述されているので、実際に上りの回線速度は、
もっと遅いと思われます。

やはり、学校内に持ち込むほうがいいでしょうか?
また、40名いっせいに生徒に使わせるには、
最低でも、どれくらいの速度が必要なのでしょうか?


Yuuichi Yamaguchi への返信

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

- Haruhiko Okumura の投稿
上り0.9Mであれば,いっせいに使っても昔の電話回線ほどの速度は出そうですね。速度だけからすればログインできないとは思えませんが,ADSLはサーバを立ち上げるためにはできていないので,何らかの制限があるのかもしれません。

いずれにしても,問題を切り分けるためにも,一度学内に持ち込んでやってみられてはどうでしょうか。
Haruhiko Okumura への返信

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

- Yuuichi Yamaguchi の投稿
Okumura先生
ご助言ありがとうございます。
> 問題を切り分けるためにも,一度学内に持ち込んで
はい。わかりました。
問題を切り分けて、原因をつかんでいきたいと思います。
学校で、生徒用コンピュータ40台の接続してあるセグメントに
サーバを持っていこうと思います。
Yuuichi Yamaguchi への返信

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

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

参考までに.

私も授業中に約90名の学生が一斉にログインしようとした所,同じように繋がる学生と繋がらない学生が発生するという現象を経験した事があります.
最初は原因が分からなかったのですが,よくよく調べてみるとアクセス元の教室のハブが負荷に耐えきれずにダウンしていました.
結局,一度のログインを20名くらいに区切って行い回避しました.
Yuichi Saotome への返信

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

- Haruhiko Okumura の投稿
それならMoodleだけでなく例えばYahoo!にアクセスするのでも20人ずつに分けないとつながらないでしょうから,すぐわかりますね。
Haruhiko Okumura への返信

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

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

それがやっかいな事に,教室内で約90人が自由にWebへアクセスしている時はまったく問題無く繋がり,
授業中等で「それではログインして教材を見てみましょう」といった感じで,一斉にアクセスした時だけ繋がらなくなるという状況でした.
Moodle本体,デーモン,サーバ,ネットワークと原因をつきつめて行った所,
結局,ハブだったという事です.
Yuuichi Yamaguchi への返信

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

- Tatsuya Shirai の投稿

 当方でも,研究室内LANと学内ネットワークとの間のProxyサーバとしてBlackJumboDogを使用しています.ProxyサーバにはWindowsXPのPC(サーバ機種,OSではありません)を使用しています.多くて10台程度のPCが同時に使用する程度ですし,アクセスタイミングも分散しているので今のところは特に問題は発生していません.

 学校でProxyサーバとして用いているのはWindows2003ServerなどのサーバOSでしょうか? 万が一,WindowsXP(特にSP2)ですと,サーバへの同時接続数(PCの数?)に制限(=10PCという意味かな)があるようですね.

 BlackJumboDogはProxy1.1に対応しなかったと思います.(Proxy1.0) 以前のFirefoxには1.1を使うか1.0を使うのかを選択できたのですが,Firefox2.0はIE同様に,この設定項目が無くなっていますね.気付きませんでした...

Tatsuya Shirai への返信

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

- Yuuichi Yamaguchi の投稿

Okumura先生   Saotome先生  Shirai先生

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

さきほど、生徒用クライアント40台と同じセグメント内にmoodleサーバを設置して、

40台いっせいにアクセスさせました。

これにより、エラーが返ってくるクライアントは一台もありませんでした。

ただし、レスポンスタイムが長く感じられます。ログインボタンを一斉にクリックさせてから、次の画面に遷移するまで、3~5分程度かかっていました。

ただ、小テストを実施してからは、サーバへアクセスするタイミングが個々に変わるため、レスポンスも数秒で返ってくるクライアントもありました。

そして、この検証中に、サーバでtopコマンドを用いて、CPUの使用量と、メモリの使用量を見ていましたら、CPUは常に80~99%近くをさまよっていました。また、メモリは最大で900MB程度でした(ただ、生徒からのアクセスが終了してからも400MB程度が使用中となっていました)

もう少しレスポンスを早くしたいと思っております。このレスポンスタイムでは、Saotome先生が対応されたように、20台ずつアクセスさせるなどしなければならないと思っております。これは少し面倒なので、なんとか、

Apacheのチューニングについて、もっと、勉強して、授業で快適に使いたいと思っております。

そこでMoodle入門 オープンソースで構築するeラーニングシステム

という本が今日にも届く予定なので、しっかり読んで、サーバのチューニングをしていこうと思っています。

Yuuichi Yamaguchi への返信

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

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

いまだに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 の投稿
五月女です.

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

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

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

根気強くがんばってください.
Yuuichi Yamaguchi への返信

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

- Takayuki ISHIKAWA の投稿
画像 Developers

大阪国際大学の石川です。

本学でも、DB overload という error が頻発して困ったことがあります。RAM を増強して反応は速くなったものの解決せず、PHP accelerator を入れて頻度が下がるものの解決せず、結局 moodle 1.7.1 を moodle 1.8 系列に上げて解決しました。

この解決のため、moodle の英語の forum を読み、どこかに「この問題は 1.8.4+ で解決しています」というようなことが開発者によって書かれていたのですが、今は URL を失念してしまったのでここには書けません。すみません。

Takayuki ISHIKAWA への返信

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

- Haruhiko Okumura の投稿
http://docs.moodle.org/en/Installing_Moodle
ロール機能のためにデータベースアクセスが増えた。1.8.3+でかなり改善されたけれども,まだ大規模利用では注意する必要がある——ということのようです。
大阪国際大学さんはどれくらいのハードウェアでしょうか。
Haruhiko Okumura への返信

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

- Takayuki ISHIKAWA の投稿
画像 Developers
すみません、hardware 関係の管理は教員ではないので詳しくは分からないのですが、確か RAM を 1GB→5GB に増強してあったと思います。
Takayuki ISHIKAWA への返信

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

- TATSUO MIWA の投稿
奥村先生が示されたURLを拝見すると、
--引用--
The general rule of thumb for a single server is that the approx max concurrent users = RAM (GB) * 50 and the approx max browsing users = Approx max concurrent users * 5. As an example, a university with 500 total computers on campus and 100 concurrent users at any time will need approx 2GB of RAM on the one server to support the number of concurrent users.
--引用終わり--

とありました、RAMのサイズ(GB)×50 ユーザがおおよその同時接続ユーザが想定されているみたいです。なので、ISIKAWA様の環境ですと、250名が同時に接続してもハードウェア的には大丈夫ですね。(ハードウェアをMoodle専用としてご利用の場合ですが・・・)

同時に、
--引用--
Note: As of August 31, 2007, the moodle 1.8.2+ codes are still not suitable for large installation, especially if you have large number (e.g. 20,000+) of courses. The main reason is the codes related to ROLES are still not fully optimized with database queries and still need some work. If you are planning to use 1.8.x codes for a larger institution, please make sure that you have sufficient time to do your own testing and performance profiling.
--引用終わり--

とあり、コース数が多いと時間がかかるとあります。バージョンがあがれば解決されていくかと思います。

TATSUO MIWA への返信

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

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

データが古いので参考になるか分かりませんが.

昔jMeterを用いて,講義中における学生のMoodle上での行動を記録した結果から,様々なテスト形式を作成し負荷についての調査行いました.

調査結果から,下記の環境で180人程度でしたら裁けそうでした. 笑顔
ただ,ログイン処理が集中すると,ログインが完了するまでにタイムラグが生じたりしました.
下記の環境ですと,処理が集中して最初に頭打ちになるのはhttpdのプロセスでした.

CPU AMD Athlon 64 X2 Dual Core Processor 3800+ (2009.27-MHz)
Memory DDR400 1GB*4 (4608MB)
HDD S-ATA 250GB*4 ((250GB*2 RAID1)*2)
NIC Broadcom NetXtreme GigaBitEther(bge0)
OS FreeBSD 6.1-RELEASE amd64
HTTP Server Apache-2.2.0 7
PHP PHP 5.1.4
RDBMS MySQL 4.1.16
Moodle Moodle 1.5.4+
(アクセラレーション,キャッシュ等は使っていません.)


Yuichi Saotome への返信

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

- Haruhiko Okumura の投稿
どうもありがとうございます。これはMoodle 1.5.4+ですね。Moodle 1.7以降でRolesが導入されてから,何かするには必ずロールのテーブルを参照して権限があるかどうか調べることになり,処理が重くなったはずなのですが,1.5や1.6と比べて1.8以降がどれくらい重くなったかがわかるようなデータはないでしょうか。
Haruhiko Okumura への返信

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

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

残念な事に1.7以降で取得したデータはまだありません.

ただ,私達としても,1.7以降のロールの導入によるDBアクセスの増加については,調査しなければならないと考えています.

幸いな事に,手元には学生の実アクセスから生成したjMeterのテスト式とログ収集のスクリプトやノウハウがあり,環境を構築してテストを行う予定があります.(実行環境発注済み)
データができたら公開するようにします.

信州大学のMoodleに対する取り組みについては,「http://elc02.shinshu-u.ac.jp/」にて公開していく予定です.
(暫定ですが,改変したコードも公開始めました)