「同時ユーザ」はどのように定義しますか?
Hardware and performanceフォーラムで繰り返し強調されているように、特定の時点でのサーバの負荷は、同時ユーザの数によって決まります。ユーザアカウントの総数でも、ログインしているユーザの数でもありません。「同時ユーザ」という用語は、サーバが実際に何らかの処理を行っている対象のユーザを指します。その処理は、PHPで書かれたウェブページの処理、データベースへのクエリ、あるいは単なるファイルの転送かもしれません(ウィキペディアの並行性もご覧ください)。厳密に言えば、アクティブなウェブサーバプロセスの数(それぞれがメモリを消費します)と、データベース接続の数を意味します。
「同時ユーザ」が有用な指標ではないのはなぜですか?
新しいサイトや新しいハードウェアを検討する際、この指標はあまり有用ではありません。「同時ユーザ」(「同時リクエスト」と呼ぶほうが適切かもしれません)がどれだけになるか、まったくわからないためです。
たとえば、登録ユーザが10,000人いて、ピーク時にはそのうち約1,000人がシステムを使用すると見積もった場合でも、「同時ユーザ」の数を簡単に求める方法はありません。
- ユーザが何をしているかによって異なります(フォーラムに投稿している場合は、かなり頻繁にリクエストを行いますが、投稿を書くために長い間が空きます。PDFをダウンロードしている場合は、リクエストは1回だけですが、時間が長くかかります。小テストを受験している場合は、非常に頻繁にリクエストを行います)。
- システムのパフォーマンスにも左右されます。システムが一般的なページを0.1秒で提供できる場合、1秒以内に10人がリクエストを行うと、平均の同時ユーザ数は1になります。システムがページの提供に1秒かかる場合、同じ利用パターンでも平均の同時ユーザ数は10になります。
さらに、「同時ユーザ」は大きなファイルをダウンロードしている場合もあり、その転送にはネットワーク接続の速度に応じた時間がかかるため、同時ユーザの数は需要の尺度としてあまり正確ではありません。これもサーバに負荷をかけますが、サーバは、低速なネットワーク接続の10人の同時ユーザに10個の大きなPDFファイルを送信することには容易に対応できる一方で、10人のユーザが小テストのような複雑なページに対して個別のPHPリクエストを継続的に行う場合は、対応に苦労する可能性があります。
より良い指標は何ですか?
ピーク時の1秒あたりのリクエスト数(ウェブログ、mdl_logの行数などから求めます)のほうが、サーバの需要を大まかに見積もる方法としておそらく適しています。ただし、利用パターンが不明な新しいサーバについてこれを割り出すのは、依然として非常に困難です。
「n」人の同時ユーザに対してどのようなハードウェアを購入すべきですか?
まず、上記を読んで、「n」をほぼ正しく表しているか確認してください。残念ながら、答えは「場合によります」です。主に、選択したオペレーティングシステム、ソフトウェア構成(特にウェブサーバとデータベースのチューニング)、そしてユーザが何をするかによって異なります。考えられる最悪のシナリオは、大人数のクラスの全員がまったく同時に時間制限付きの小テストを開始することです。幸い、座って何かを読んでいるユーザは、(次の活動/ページをクリックするまで)サーバに負荷をまったくかけていません。非常に大まかに言えば、最悪の場合、Moodleサイトはメモリ1GBあたりわずか10~20人の同時ユーザしか処理できない可能性があります。Moodleは大規模なアプリケーションであり、プロセスごとに50MB以上(ときにはそれよりはるかに多く)のRAMを簡単に使用します。非常に大規模なサイトを計画している場合は、まずパイロット運用を行い、使用リソースをいくつか測定することを強くお勧めします。
Moodleの導入を検討しているユーザは、必要な同時実行数を大幅に過大評価する傾向があります。ここで見誤ると、非常に高くつく間違いになる可能性があります。
パフォーマンスを向上させる最も簡単な方法は何ですか?
メモリを増設しましょう!
Moodleサイトのベンチマークを行うにはどうすればよいですか?
もちろん、システムの各部分を個別にベンチマークすることもできます。オペレーティングシステムから見たハードウェア(CPU、ディスクアクセスなど)、ウェブサーバのパフォーマンス、データベースサーバのパフォーマンス、PHP処理の実行などです。詳細については、「パフォーマンスの推奨事項」ページのベースラインベンチマークの取得をご覧ください。
しかし、それらの結果から最大同時ユーザ数を導き出す簡単な公式はありません。Moodleコミュニティでは、おおよその数値を算出するPHPスクリプトパフォーマンスの見通し - ちょっとしたスクリプトが出回っています。最新バージョンは2011年3月25日の投稿に添付されています。
警告:このスクリプトを本番サーバで実行すると、望ましくない副作用が生じる可能性があることに注意してください。テストサイトで実行することを強くお勧めします。
PHPアクセラレータとは何ですか?
ウィキペディアのPHPアクセラレータをご覧ください。
利用可能なソフトウェアについては、「パフォーマンスの推奨事項」ページのPHPのパフォーマンスで説明しています。
ユーザによる提案がいくつかPHPアクセラレータに関する最新情報にあります。
Moodleをクラスタ化するにはどうすればよいですか?
「パフォーマンスの推奨事項」ページのスケーラビリティをご覧ください。
Moodleを複製するにはどうすればよいですか?
サイトが非常に遅いのですが、どうすればよいですか?
まず、「どのくらい遅いか」を調べてください。(ここにテーマのトリックを記載)。
次の問題は、パフォーマンスが正常なのか、何かが誤動作しているのかです。誤動作する可能性があるものは数多くあります。
- ハードウェア
- クラッシュしたファイルシステム、特にネットワークファイルシステム
- システムのメモリリークやその他のクラッシュ
- Moodleのバグ
- 破損したデータベース
- ネットワークの問題(DNS、ファイアウォールなど)
あるいは、その状況下ではパフォーマンスが「正常」である可能性もあります。
- 専用サーバですか、それとも共有(仮想)サーバですか?
- RAMや処理能力はどれくらいありますか?
- どのようなソフトウェアスタックを使用していますか?(UnixかWindowsか、ApacheかIISか、MySQL、PostgreSQLまたはSQL-Serverか、など)
- 何人の同時ユーザをサポートできるか
- どのモジュール/活動を使用していますか?「パフォーマンスの推奨事項」ページのさまざまなMoodleモジュールのパフォーマンスを確認してください。
ベースラインベンチマークを取得し、公表されている数値と比較してください。
N人のユーザに必要な要件は何ですか?
インストールしたMoodleは何人のユーザをサポートできますか?
これは、上記と同じ質問を別の形で尋ねたものです。上に戻ってご覧ください。
最適なウェブサーバは何ですか?
誰に尋ねるかによります。ApacheはUnixやLinuxでほぼ普遍的に使用されています。しかし、Nginxは最新バージョンのApacheを上回るパフォーマンスを発揮しており、ここ数年勢いを増しています。IISはWindows Serverネイティブのウェブサーバですが、Apacheも使用できます。いつものように、利用可能な最新バージョンが最高のパフォーマンスを提供する可能性が高いです。他にも「ニッチ」なウェブサーバがあります。そのいずれかに関心がある場合は、おそらくすでにご存じでしょう。
最新のウェブサーバのベンチマークをいくつか紹介します。
64bitにすべきですか、それとも32bitで問題ありませんか?
現在では、ほとんどのサーバがいずれにせよ64bitです。デスクトップでは、選択肢がある場合、おそらく32bitのほうがサポートが充実しています。
どのホスティング業者をお勧めしますか?
MoodleパートナーはMoodle HQによって承認されており、Moodleに関する幅広い専門知識を持ち、包括的なサポートを提供できます。ただし、予算が厳しい場合、最も安価な選択肢になる可能性は低いでしょう(問い合わせてみる価値はありますが)。安価な「共有ホスティング」では、Moodleを適切に実行するのに十分なリソースが提供されない可能性があります。他にも多くの選択肢があり、実際にはニーズによって異なります。ディスカッションの一例については、http://moodle.org/mod/forum/discuss.php?d=99405 をご覧ください。
関連項目
- Tim HuntによるMoodleのパフォーマンステストに関するブログ投稿
Using Moodleフォーラムのディスカッション