「パフォーマンスおよびスケーラビリティ」の版間の差分
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
||
42行目: | 42行目: | ||
あなたが正しいフォーマットでログを記録するためPostgreSQLを少し設定する必要があります。インストラクションはファイル内にあります。 | あなたが正しいフォーマットでログを記録するためPostgreSQLを少し設定する必要があります。インストラクションはファイル内にあります。 | ||
==Moodleサイトの規模は | ==Moodleサイトの規模は?== | ||
[http://moodle.org/stats/ 統計]で確認する限り、現在、世界中での大きなサイトは以下のように記録されています: | |||
[http://moodle.org/stats/ 統計] | |||
* 1 000 000ユーザ以上 | * 1 000 000ユーザ以上 | ||
* 50 000コース以上 | * 50 000コース以上 | ||
62行目: | 53行目: | ||
When planning and testing your code, these are the sorts of numbers you should be contemplating. However, do not assume that Moodle sites will never get bigger than this. | When planning and testing your code, these are the sorts of numbers you should be contemplating. However, do not assume that Moodle sites will never get bigger than this. | ||
あなたのコードを計画およびテストする場合、このような数字を考慮する必要があります。しかし、Moodleサイトがこれより大きくなることはないと考えないでください。 | |||
Even if you can't test sites this big on your development server, you should use the generator script so you can test your code in a Moodle site that is not tiny. | Even if you can't test sites this big on your development server, you should use the generator script so you can test your code in a Moodle site that is not tiny. | ||
あなたの開発サーバでこれほど大きなサイトをテストできない場合でも、あなたのコードを小さくないMoodleサイトでテストできるようジェネレータスクリプトを使用すべきです。 | |||
==関連情報== | ==関連情報== |
2022年2月14日 (月) 15:01時点における版
作成中です - Mitsuhiro Yoshida (トーク)
パフォーマンスとはMoodleが一定のハードウェアで可能な限り多くのユーザをサポートできるようにすることです。
もちろん、あなたはいつでも大きなサーバを購入できます。「スケーラビリティ」とは2倍の性能のサーバを買った場合、2倍の負荷に対応できるようにすることです。
このページはMoodleコーディングガイドラインの一部です。
スケールおよびパフォーマンスのためのコードを書く
すべてのページで決まった数のデータベースクエリしか使用しない
- ループの中にデータベースコードがある場合、非常に疑ってください。
- これはデータベースアクセスが関数の中に隠されている場合、発見が難しいことがあります。
- 代わりにJOINおよびサブクエリを使用してください (get_records_sql, get_recordset_sql等)。
- またはあなたが必要としている情報を可能な限り効率的に取得できるMoodle API関数を探してください (例 get_users_by_capability)。
- 詳細は私たちがサポートするすべてのデータベースで動作するSQLの記述方法に関してデータベースガイドラインをご覧ください。
各ページの生成に必要なRAMの容量を制限する
- 大きなレポートは一定の大きさのページに分割する必要があります。
- データベースから大量のデータを処理する場合、レコードセットを使用して処理する必要があります (あなたがデータベース内のすべての処理をSQLで実行できない場合)。また、recordset_walk iterator を使用します。あなたがすべての結果を大量のPHP配列で読み込む場合、レコードセット使用によるRAMの利点はありません。
その他の外部コールに注意する
データベースクエリのようにPHPコード実行だけよりはるかに遅い操作があります。例えば:
- シェルスクリプトの実行
- ウェブサービスコールの作成
- (それほどではありませんが)ファイル操作
あなたがこれらを実行する場合、必ずパフォーマンスを心配してください。
あなたのコードのパフォーマンス改善方法 How to improve the performance of your code
開発中の測定
- あなたのコードが何をしているのか確認するため、パフォーマンス情報 (データベースクエリのカウントを含む) を有効にしてください。
- あなたの新しいコードを読み込むため、JMeterのようなツールを使用してください。
- パフォーマンスを比較するため、https://github.com/moodlehq/moodle-performance-comparison (Moodle 2.5 以降) を使用してください。また、Test site generatorまたはTest course generatorジェネレータ (これもMoodle 2.5以降) を使用できます。
実運用中の測定
- あなたがPostgreSQLを使用している場合、ログを解析して遅いクエリのトップ10を出力するためのスクリプトがあます。あなたに毎日メールを送信するためcronjobに組み込めます。このスクリプトに関して以下のページをご覧ください:
あなたが正しいフォーマットでログを記録するためPostgreSQLを少し設定する必要があります。インストラクションはファイル内にあります。
Moodleサイトの規模は?
統計で確認する限り、現在、世界中での大きなサイトは以下のように記録されています:
- 1 000 000ユーザ以上
- 50 000コース以上
- 1ユーザあたり5 000コース
- 50ロール以上
- 10レベルの深さにネストされた100以上のコースカテゴリ
- コースあたりXXX以上の活動モジュール
- さらにここに追加してください。
When planning and testing your code, these are the sorts of numbers you should be contemplating. However, do not assume that Moodle sites will never get bigger than this. あなたのコードを計画およびテストする場合、このような数字を考慮する必要があります。しかし、Moodleサイトがこれより大きくなることはないと考えないでください。
Even if you can't test sites this big on your development server, you should use the generator script so you can test your code in a Moodle site that is not tiny. あなたの開発サーバでこれほど大きなサイトをテストできない場合でも、あなたのコードを小さくないMoodleサイトでテストできるようジェネレータスクリプトを使用すべきです。
関連情報
- Moodle coding guidelines
- Performance guidance for administrators
- Performance FAQ