「パフォーマンス」の版間の差分
提供:MoodleDocs
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
||
1行目: | 1行目: | ||
少ないユーザでも、スケールアップした数千名のユーザでも、Moodleを快適に稼動させることが可能です。パフォーマンスに関係する要素は、基本的にどのPHPベースのデータベース主導型システムとも同じです。 また、( アプリケーションレイヤと明確に分離された ) Moodleの設計により、強力に拡張性のあるセットアップを行うことが可能です。( [https://docs.moodle.org/en/Large_installations 大規模なMoodleインストール事例]をご覧ください。) | 少ないユーザでも、スケールアップした数千名のユーザでも、Moodleを快適に稼動させることが可能です。パフォーマンスに関係する要素は、基本的にどのPHPベースのデータベース主導型システムとも同じです。 また、(アプリケーションレイヤと明確に分離された) Moodleの設計により、強力に拡張性のあるセットアップを行うことが可能です。([https://docs.moodle.org/en/Large_installations 大規模なMoodleインストール事例]をご覧ください。) | ||
大規模なサイトでは、通常ウェブサーバとデータベースサーバを分離します。しかし、小規模なサイトでは、サーバを分離することは通常必要ではありません。 | 大規模なサイトでは、通常ウェブサーバとデータベースサーバを分離します。しかし、小規模なサイトでは、サーバを分離することは通常必要ではありません。 | ||
例えば、1台以上のウェブサーバを使用して、Moodleをロードバランスした環境で使用することも可能です。ロードバランス用に分離された複数のウェブサーバでは、同一のデータベースおよび同一のファイル保存エリアを参照するようにしてください。しかし、ロードバランス環境でない場合、アプリケーションレイヤとデータベースの分離で十分にクラスタ化することができます。同様に、データベースをクラスタ化することも可能です ( 例 MySQLクラスタ )。 | 例えば、1台以上のウェブサーバを使用して、Moodleをロードバランスした環境で使用することも可能です。ロードバランス用に分離された複数のウェブサーバでは、同一のデータベースおよび同一のファイル保存エリアを参照するようにしてください。しかし、ロードバランス環境でない場合、アプリケーションレイヤとデータベースの分離で十分にクラスタ化することができます。同様に、データベースをクラスタ化することも可能です (例 MySQLクラスタ)。 | ||
==ウェブサーバのパフォーマンス== | ==ウェブサーバのパフォーマンス== | ||
* あなたのウェブサーバの「RAM」の容量はパフォーマンスに関する重要な要素です - 可能な限り多く設置してください ( 例 4GB)。 | * あなたのウェブサーバの「RAM」の容量はパフォーマンスに関する重要な要素です - 可能な限り多く設置してください (例 4GB)。 | ||
* LinuxまたはUnixがサーバに対するMoodle推奨「オペレーティングシステム」です。LinuxやUnixは、高負荷時にMac OSXやWindowsサーバよりも快適に動作します。 | * LinuxまたはUnixがサーバに対するMoodle推奨「オペレーティングシステム」です。LinuxやUnixは、高負荷時にMac OSXやWindowsサーバよりも快適に動作します。 | ||
* CPUの負荷を軽減するため、[http://sourceforge.net/projects/turck-mmcache/ Turck MMCache]または[http://www.php-accelerator.co.uk/ The ionCube PHP Accelerator]のような、'''PHP accelerator'''の利用を強くお勧めします。 | * CPUの負荷を軽減するため、[http://sourceforge.net/projects/turck-mmcache/ Turck MMCache]または[http://www.php-accelerator.co.uk/ The ionCube PHP Accelerator]のような、'''PHP accelerator'''の利用を強くお勧めします。 | ||
* PHPをApacheモジュールとしてインストールすると、パフォーマンスは ( CGIよりも ) 良くなります。 | * PHPをApacheモジュールとしてインストールすると、パフォーマンスは (CGIよりも) 良くなります。 | ||
* Unix/Linuxシステムでは、( PHPベースのzipライブラリよりも ) システムの'''zip/unzip'''コマンドの使用を許可することで、パフォーマンスが大きく改善されます - 管理/設定/詳細設定へアクセスして、適切な実行ファイルのパスを入力してください。( 同様に、'''du'''のパスを入れることで、Moodleのディレクトリコンテンツのリスティングスピードが改善されます。) | * Unix/Linuxシステムでは、(PHPベースのzipライブラリよりも) システムの'''zip/unzip'''コマンドの使用を許可することで、パフォーマンスが大きく改善されます - 管理/設定/詳細設定へアクセスして、適切な実行ファイルのパスを入力してください。(同様に、'''du'''のパスを入れることで、Moodleのディレクトリコンテンツのリスティングスピードが改善されます。) | ||
* '''セキュアウェブコネクション''' ( '''https''' ) を使用することで、ウェブサーバおよびクライアントに高い負荷がかかります - 特に効果的にキャッシングが使用されないため、ファイルのリクエスト数が劇的に増加する場合があることに注意してください。この理由から、すべてのMoodleページに'''https'''を使用することは、お勧めできません。Moodle詳細設定ページにて、ログインページのみ'''https'''を利用できるよう設定できます。 | * '''セキュアウェブコネクション''' ('''https''') を使用することで、ウェブサーバおよびクライアントに高い負荷がかかります - 特に効果的にキャッシングが使用されないため、ファイルのリクエスト数が劇的に増加する場合があることに注意してください。この理由から、すべてのMoodleページに'''https'''を使用することは、お勧めできません。Moodle詳細設定ページにて、ログインページのみ'''https'''を利用できるよう設定できます。 | ||
* メモリの使用量が大幅に軽減されるため、Apacheの代わりに、軽いウェブサーバ [http://www.lighttpd.org/ lighttpd] と[http://www.fastcgi.com/ fastCGI]の利用でパフォーマンスを良くすることができます。1つのapacheプロセスは、[http://www.lighttpd.org/ lighttpd]と[http://www.fastcgi.com/ fastCGI]のすべてのプロセスより多くのメモリを必要とします。管理者が作業に時間を必要とするため、あなたが十分なハードウェアを用意できる場合、これは最良の方法ではないと思われます。 | * メモリの使用量が大幅に軽減されるため、Apacheの代わりに、軽いウェブサーバ [http://www.lighttpd.org/ lighttpd] と[http://www.fastcgi.com/ fastCGI]の利用でパフォーマンスを良くすることができます。1つのapacheプロセスは、[http://www.lighttpd.org/ lighttpd]と[http://www.fastcgi.com/ fastCGI]のすべてのプロセスより多くのメモリを必要とします。管理者が作業に時間を必要とするため、あなたが十分なハードウェアを用意できる場合、これは最良の方法ではないと思われます。 | ||
* httpd.confのMaxRequestsPerChildを20-30くらいに下げることを考えてください。( この値を低く設定し過ぎた場合、パフォーマンスの向上よりシステムのオーバーヘッドが増すことになります )。 php.iniのmemory_limitを少なくとも16Mに下げることも考えてください。 ( [http://moodle.org/mod/forum/discuss.php?d=39656 Rory Allford氏による推奨] ) | * httpd.confのMaxRequestsPerChildを20-30くらいに下げることを考えてください。(この値を低く設定し過ぎた場合、パフォーマンスの向上よりシステムのオーバーヘッドが増すことになります)。 php.iniのmemory_limitを少なくとも16Mに下げることも考えてください。 ([http://moodle.org/mod/forum/discuss.php?d=39656 Rory Allford氏による推奨]) | ||
==データベースのパフォーマンス== | ==データベースのパフォーマンス== | ||
* [http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html MySQLパラメータのチューニング] ( MySQLマニュアルより - 英文 ) | * [http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html MySQLパラメータのチューニング] (MySQLマニュアルより - 英文) | ||
* [[Arguments in favour of PostgreSQL]] | * [[Arguments in favour of PostgreSQL]] | ||
* [[Increasing the database connection lifetime]] | * [[Increasing the database connection lifetime]] | ||
24行目: | 24行目: | ||
==各Moodleモジュールのパフォーマンス== | ==各Moodleモジュールのパフォーマンス== | ||
Moodleの活動モジュールフィルタおよび他のプラグインは有効/無効にすることができます。不要な場合 ( 必須ではありませんが )、必要に応じていくつかの機能 ( チャット等 ) を無効にしてください。各モジュールに関するノート: | Moodleの活動モジュールフィルタおよび他のプラグインは有効/無効にすることができます。不要な場合 (必須ではありませんが)、必要に応じていくつかの機能 (チャット等) を無効にしてください。各モジュールに関するノート: | ||
* '''チャット'''モジュールは、メインサーバに対して頻繁にHTTPリクエストする点において、大食いだと[http://moodle.org/mod/forum/discuss.php?d=37979&parent=175079 言われています]。管理 >> 設定 >> モジュール管理 >> チャット で、chat_normal_updatemodeを「Streame」にするか、chat_methodを「Chatサーバデーモン」にすることでサーバに対する負荷を軽減することができます。 | * '''チャット'''モジュールは、メインサーバに対して頻繁にHTTPリクエストする点において、大食いだと[http://moodle.org/mod/forum/discuss.php?d=37979&parent=175079 言われています]。管理 >> 設定 >> モジュール管理 >> チャット で、chat_normal_updatemodeを「Streame」にするか、chat_methodを「Chatサーバデーモン」にすることでサーバに対する負荷を軽減することができます。 | ||
* [http://moodle.org/mod/forum/discuss.php?d=25616&parent=120770 55名の学生が同時に'''小テスト'''を使用する場合のパフォーマンスに関する報告 - 英文] | * [http://moodle.org/mod/forum/discuss.php?d=25616&parent=120770 55名の学生が同時に'''小テスト'''を使用する場合のパフォーマンスに関する報告 - 英文] | ||
* Moodleの'''cron'''タスクは、スクリプト''cron.php''を呼ぶことで動作します。このスクリプトが、HTTP経由で呼ばれた場合 ( 例 wgetまたはcurlを使用 )、大規模なMoodleサイトでは大量のメモリを消費します。phpコマンドを使用して直接呼ばれた場合 ( 例 ''php -f /path/to/moodle/directory/admin/cron.php'')、効率は大幅に改善されます。 | * Moodleの'''cron'''タスクは、スクリプト''cron.php''を呼ぶことで動作します。このスクリプトが、HTTP経由で呼ばれた場合 (例 wgetまたはcurlを使用)、大規模なMoodleサイトでは大量のメモリを消費します。phpコマンドを使用して直接呼ばれた場合 (例 ''php -f /path/to/moodle/directory/admin/cron.php'')、効率は大幅に改善されます。 | ||
* 多くのフィルタを有効にする場合、サーバの負荷 ( 特にスペックの低いサーバ ) に重大な影響を及ぼします。有効にされているフィルタの数は、あなたのサイトのレスポンスに関して直接影響を、すなわち各ページの表示に要する時間に関して影響を及ぼします。パフォーマンスを上げるため、管理 >> 設定 >> フィルタ の「テキストキャッシュ保存時間」を「No」以外に設定して、特に必要がない場合は「すべての文字をフィルタする」を「No」にしてください。設定が疑わしい場合、[[Performance profiling|パフォーマンスのプロファイリング]]を行って、あなたの変更内容がプロセスタイムにどのように影響するのか確認してください。 | * 多くのフィルタを有効にする場合、サーバの負荷 (特にスペックの低いサーバ) に重大な影響を及ぼします。有効にされているフィルタの数は、あなたのサイトのレスポンスに関して直接影響を、すなわち各ページの表示に要する時間に関して影響を及ぼします。パフォーマンスを上げるため、管理 >> 設定 >> フィルタ の「テキストキャッシュ保存時間」を「No」以外に設定して、特に必要がない場合は「すべての文字をフィルタする」を「No」にしてください。設定が疑わしい場合、[[Performance profiling|パフォーマンスのプロファイリング]]を行って、あなたの変更内容がプロセスタイムにどのように影響するのか確認してください。 | ||
==関連情報== | ==関連情報== | ||
*Using Moodleフォーラム [http://moodle.org/mod/forum/view.php?f=94 サーバおよびパフォーマンス ( 英文 )] | *Using Moodleフォーラム [http://moodle.org/mod/forum/view.php?f=94 サーバおよびパフォーマンス (英文)] | ||
[[Category:管理者]] | [[Category:管理者]] |
2006年11月7日 (火) 18:20時点における版
少ないユーザでも、スケールアップした数千名のユーザでも、Moodleを快適に稼動させることが可能です。パフォーマンスに関係する要素は、基本的にどのPHPベースのデータベース主導型システムとも同じです。 また、(アプリケーションレイヤと明確に分離された) Moodleの設計により、強力に拡張性のあるセットアップを行うことが可能です。(大規模なMoodleインストール事例をご覧ください。)
大規模なサイトでは、通常ウェブサーバとデータベースサーバを分離します。しかし、小規模なサイトでは、サーバを分離することは通常必要ではありません。
例えば、1台以上のウェブサーバを使用して、Moodleをロードバランスした環境で使用することも可能です。ロードバランス用に分離された複数のウェブサーバでは、同一のデータベースおよび同一のファイル保存エリアを参照するようにしてください。しかし、ロードバランス環境でない場合、アプリケーションレイヤとデータベースの分離で十分にクラスタ化することができます。同様に、データベースをクラスタ化することも可能です (例 MySQLクラスタ)。
ウェブサーバのパフォーマンス
- あなたのウェブサーバの「RAM」の容量はパフォーマンスに関する重要な要素です - 可能な限り多く設置してください (例 4GB)。
- LinuxまたはUnixがサーバに対するMoodle推奨「オペレーティングシステム」です。LinuxやUnixは、高負荷時にMac OSXやWindowsサーバよりも快適に動作します。
- CPUの負荷を軽減するため、Turck MMCacheまたはThe ionCube PHP Acceleratorのような、PHP acceleratorの利用を強くお勧めします。
- PHPをApacheモジュールとしてインストールすると、パフォーマンスは (CGIよりも) 良くなります。
- Unix/Linuxシステムでは、(PHPベースのzipライブラリよりも) システムのzip/unzipコマンドの使用を許可することで、パフォーマンスが大きく改善されます - 管理/設定/詳細設定へアクセスして、適切な実行ファイルのパスを入力してください。(同様に、duのパスを入れることで、Moodleのディレクトリコンテンツのリスティングスピードが改善されます。)
- セキュアウェブコネクション (https) を使用することで、ウェブサーバおよびクライアントに高い負荷がかかります - 特に効果的にキャッシングが使用されないため、ファイルのリクエスト数が劇的に増加する場合があることに注意してください。この理由から、すべてのMoodleページにhttpsを使用することは、お勧めできません。Moodle詳細設定ページにて、ログインページのみhttpsを利用できるよう設定できます。
- メモリの使用量が大幅に軽減されるため、Apacheの代わりに、軽いウェブサーバ lighttpd とfastCGIの利用でパフォーマンスを良くすることができます。1つのapacheプロセスは、lighttpdとfastCGIのすべてのプロセスより多くのメモリを必要とします。管理者が作業に時間を必要とするため、あなたが十分なハードウェアを用意できる場合、これは最良の方法ではないと思われます。
- httpd.confのMaxRequestsPerChildを20-30くらいに下げることを考えてください。(この値を低く設定し過ぎた場合、パフォーマンスの向上よりシステムのオーバーヘッドが増すことになります)。 php.iniのmemory_limitを少なくとも16Mに下げることも考えてください。 (Rory Allford氏による推奨)
データベースのパフォーマンス
- MySQLパラメータのチューニング (MySQLマニュアルより - 英文)
- Arguments in favour of PostgreSQL
- Increasing the database connection lifetime
各Moodleモジュールのパフォーマンス
Moodleの活動モジュールフィルタおよび他のプラグインは有効/無効にすることができます。不要な場合 (必須ではありませんが)、必要に応じていくつかの機能 (チャット等) を無効にしてください。各モジュールに関するノート:
- チャットモジュールは、メインサーバに対して頻繁にHTTPリクエストする点において、大食いだと言われています。管理 >> 設定 >> モジュール管理 >> チャット で、chat_normal_updatemodeを「Streame」にするか、chat_methodを「Chatサーバデーモン」にすることでサーバに対する負荷を軽減することができます。
- 55名の学生が同時に小テストを使用する場合のパフォーマンスに関する報告 - 英文
- Moodleのcronタスクは、スクリプトcron.phpを呼ぶことで動作します。このスクリプトが、HTTP経由で呼ばれた場合 (例 wgetまたはcurlを使用)、大規模なMoodleサイトでは大量のメモリを消費します。phpコマンドを使用して直接呼ばれた場合 (例 php -f /path/to/moodle/directory/admin/cron.php)、効率は大幅に改善されます。
- 多くのフィルタを有効にする場合、サーバの負荷 (特にスペックの低いサーバ) に重大な影響を及ぼします。有効にされているフィルタの数は、あなたのサイトのレスポンスに関して直接影響を、すなわち各ページの表示に要する時間に関して影響を及ぼします。パフォーマンスを上げるため、管理 >> 設定 >> フィルタ の「テキストキャッシュ保存時間」を「No」以外に設定して、特に必要がない場合は「すべての文字をフィルタする」を「No」にしてください。設定が疑わしい場合、パフォーマンスのプロファイリングを行って、あなたの変更内容がプロセスタイムにどのように影響するのか確認してください。
関連情報
- Using Moodleフォーラム サーバおよびパフォーマンス (英文)