「パフォーマンス」の版間の差分

提供:MoodleDocs
移動先:案内検索
編集の要約なし
 
(Done.)
 
(2人の利用者による、間の188版が非表示)
1行目: 1行目:
鋭意翻訳中です。
少人数のユーザ、数千名のユーザでも、Moodle は快適に動作させることができます。パフォーマンスに関係する要素は、基本的に他の PHP ベースのデータベース主導型システムと同じです。 あなたのサーバを最適化するには「ユーザ数の多寡が大きな要素となること」に焦点を置いてください。例えば、相対的にみて、データベースにアクセスするユーザよりも閲覧するユーザが多い場合、ウェブサーバのパフォーマンスを改善してください。


Moodle can be made to perform very well, at small usage levels or scaling up to many thousands of users. The factors involved in performance are basically the same as for any PHP-based database-driven system, and Moodle's design (with clear separation of application layers) allows for strongly scalable setups. (Please check the list of [[Large installations|large Moodle installations]].)
==ベンチマークのベースラインを取得する==


Large sites usually separate the web server and database onto separate servers, although for smaller installations this is typically not necessary.
最適化を試みる前に、あなたが改善しようと考えるシステムコンポーネントに関するベンチマークのベースラインを取得してください。Linux の場合、[http://lbs.sourceforge.net/ LBS] をお試しください。Windows の場合、パフォーマンスモニターを使用してください。システムに関する現在のパフォーマンスの数値データを取得することにより、あなたの設定変更がどれだけ実際のインパクトを与えたのか測定することができるようになります。


It is possible to load-balance a Moodle installation, for example by using more than one webserver. The separate webservers should query the same database and refer to the same filestore area, but otherwise the separation of the application layers is complete enough to make this kind of clustering feasible. Similarly, the database could be a cluster of servers (e.g. a MySQL cluster).
パフォーマンスを改善するための全体的な照準は、RAM (キャッシング) の使用量およびディスクベースの活動の軽減です。特にスワップファイルの使用を可能な限り減らすことは重要です。あなたのシステムがスワッピングを開始した場合、さらに RAM を追加すべきです。
 
一般的に「最適化の優先順位」は、第1に「記憶装置 (RAM)」、第2に「記憶装置 (速いハードディスク/ハードディスク設定の改善)」、第3に「プロセッサ (個数および速度)」です。
 
==スケーラビリティ (拡張性)==
 
アプリケーション層を明確に分離することにより、強力に拡張可能な設定を Moodle に施すことができます (詳細は [[Moodleの大規模インストール]]をご覧ください)。
 
通常、小規模サイトでは必要ありませんが、大規模サイトではウェブおよびデータベースを分離したサーバに設置してください。
 
例えば1つ以上のサーバを使用することで、Moodle をロードバランスすることは可能です。分離されたウェブサーバでは、同じデータベースに問い合わせを行い、同じファイルエリアを参照します。そうでなければ、このようなクラスタリングを適用するには、アプリケーション層の分離だけで十分です。同様に、データベースをクラスタ化することもできます (例 MySQL クラスタ)。しかし、これは簡単な仕事ではなく、エキスパートのサポートが必要です。
 
==ハードウェア設定==
'''メモ''': あなたがパフォーマンスを改善できる、簡単かつ効果的な変更は、サーバのメモリを可能な限り増やすことです (例 4GB)。メモリを増やすことで、ディスクへのスワップを減らし、さらに多くのユーザを処理することができるようになります。
* 最良の「プロセッサ性能」 (例 デュアルまたはデュアルコア) を適用することで、さらなるパフォーマンスの向上を図ることができます。最新の BIOS では、ハイパースレッディングを有効にすることができます。しかし、これが全体的なプロセッサのパフォーマンスに違いをもたらすかどうか、[http://en.wikipedia.org/wiki/Super_PI CPUベンチマークツール]を使用して確認してください。
* 可能でしたら、「SATA ドライブ」の代わりに「SCSI ハードディスク」を購入してください。SCSI ドライブが独自の統合プロセッサを持ち、複数ドライブがある場合、それぞれに統合プロセッサを持つのに対し、SATA ドライブはシステム CPU の利用を増大させます。あなたが SATA ドライブを使用する必要がある場合、マザーボードおよびドライブが NCQ (Native Command Queuing) をサポートするかどうかチェックしてください。
* 「シークタイムの短い」ハードディスクを購入してください。これは全体的なスピード (特に Moodle のレポートにアクセスする時) を改善します。
* 「スワップファイル」を正しく設定してください。一般的には、物理メモリーの4倍の設定値をお勧めします (この設定値には賛否両論あります - [[利用者:Mitsuhiro Yoshida|吉田光宏]])。
* 「RAID ディスクシステム」を使用してください。サーバコンピュータに対して、多くの異なる RAID 設定を行うことができますが、下記の設定は一般的に最も良く動作します:
** 可能であればハードウェア RAID コントローラーをインストールしてください (ソフトウェア RAID、ハードウェア RAID に関する意見も多々あります - [[利用者:Mitsuhiro Yoshida|吉田光宏]])。
** RAID-1 に設定して、オペレーティングシステムとスワップを同じドライブに設定してください。
** Moodle、ウェブサーバおよびデータベースを RAID-5 に設定した別々のディスクに入れてください。
* 遅延時間およびスループットを改善するため、「ギガビットイーサーネット」を使用してください。あなたがウェブサーバおよびデータベースサーバを分離して運用している場合、これは特に大切です。
* あなたの「ネットワークカード」の設定を確認してください。バッファおよびトランスミット/レシーブディスクリプタを増やすこと (これはプロセッサとメモリのオーバヘッドとのバランスをとってください)、TCP チェックサムの計算を OS ではなくカードにオフロードすることでパフォーマンスを改善することができます。
 
==オペレーティングシステム==
* あなたはサーバの「オペレーティングシステム」として、[http://ja.wikipedia.org/wiki/Linux Linux] (お勧めです) 、Unix ベースの OS、Windows、Mac OS X を使用することができます。シェルインターフェースのみで構成された場合、一般的に *nix オペレーティングシステムは同じタスクの処理に関して、Mac OS X または Windows サーバよりも少ないメモリを必要とします。さらに Linux にはライセンス料が発生しませんが、あなたが他のオペレーティングシステムを日常的に使用している場合、Linux コマンド等の習得に大きな学習曲線を描くことになります。サーバが SMP で動作している大量のプロセッサを持っている場合、高度にチューニングされた [http://en.wikipedia.org/wiki/Solaris_Operating_Environment Solaris] のような OS の使用を考えてみてください。
* 最適化するには、OS および「サーバ製造元の使用説明書」を確認してください。
** Linux に関しては、[http://linuxperf.sourceforge.net/ Linux Performance Team] サイトをご覧ください。
** Linux では hdparm コマンドでハードディスクの状態を詳細に調べることができます。例) hdparm -m16 -d1 でマルチセクタの read/write を有効にできます。DMA マウントのディスクには、async および noatime オプションを付けてください。
** Windows サーバでは、ネットワークアプリケーションを最適化してください (コントロールパネル >> ネットワーク接続 >> LAN 接続 >> プロパティ >> Microsoft ネットワーク用ファイルとプリンタ共有 >> 最適化)。最適化に関するドキュメントは、[http://technet.microsoft.com/ Microsoft TechNetサイト]でご覧いただけます。


==ウェブサーバパフォーマンス==
==ウェブサーバパフォーマンス==


* The amount of '''RAM''' on your web server is the strongest factor in performance - get as much as possible (eg 4GB).
[http://www.mozilla.com/en-US/ Firefox] および [https://addons.mozilla.org/en-US/firefox/addon/1843 firebug] エクステンションをインストールすることで、それぞれのページコンポーネントのロードに掛かる時間を観察することができます。また、[https://addons.mozilla.org/en-US/firefox/addon/5369 Yslow] エクステンションでは、ウェブサイトの迅速なロードするため、あなたのページを Yahoo [http://www.skrenta.com/2007/05/14_rules_for_fast_web_pages_by_1.html 14 rules] ([http://video.yahoo.com/video/play?vid=1040890 video]) に関して調査します。
* Linux or Unix is the recommended '''operating system''' for the server. They perform much better than Mac OSX or Windows servers at high loads.
 
* You are strongly recommended to use a '''PHP accelerator''' to ease CPU load, such as [http://turck-mmcache.sourceforge.net/ Turck MMCache] or PHPA.
===PHP パフォーマンス===
* Performance of PHP is better when installed as an Apache module (rather than a CGI).
* CPU ロードを軽減する[http://pecl.php.net/apc APC] (推奨)、[http://www.php-accelerator.co.uk/ PHPA]、[http://trac.lighttpd.net/xcache/ Xcache] または [http://eaccelerator.net/ eAccelerator] のような「PHP アクセラレータ」の使用を強くお勧めします。(あなたの PHP バージョンで適切に動作する PHP アクセラレータを注意深く選定してください。Turck MMCache の[http://turckmmcache.exeprod.com/TheManifestoEnglish 開発およびメンテナンスは中止され]、PHP 5 で問題が発生しますので注意してください)。PHP ページのキャッシュを [[TMPFS]] ファイルシステムに置いてください。
* On a Unix/Linux system, performance can be greatly improved by allowing the webserver to use the system '''zip/unzip''' commands (rather than PHP-based zip libraries) - visit Admin/Configure/Variables and enter the path to the relevant executables. (Similarly, filling in the path to '''du''' will improve Moodle's speed at listing directory contents.)
* CGI としてインストールするより「Apache/IIS ISAPI モジュール」としてインストールする方が、PHP のパフォーマンスは良くなります。
* Note that using '''secure web connections''' ('''https''' rather than '''http''') carries a higher processing burden, both for the webserver and the client - particularly because cacheing cannot be used as effectively, so the number of file requests is likely to increase dramatically. For this reason using https for all Moodle pages is not recommended. You can enable https just for the login screen, simply from Moodle's config page.
* ご利用の Moodle が 1.7 より以前のバージョンの場合、php.ini の「memory_limit」を確認して、16M に減らしてください ([http://moodle.org/mod/forum/discuss.php?d=39656 詳細はこのフォーラムディスカッションをご覧ください])。Moodle 1.7 以降では、「memory_limit」を 40M に設定することをお勧めします。
* You can increase performance by using the light-weight webserver [http://www.lighttpd.org/ lighttpd] in combination with PHP in fastCGI-mode instead of Apache, due to much lower memory consumption. One single apache process requires more RAM than the whole lighttpd with all of its fastCGI-processes together. Note that this may not be a good solution if you can afford lots of hardware power, because administration takes a little more time.
 
* Consider lowering MaxRequestsPerChild in httpd.conf to as low as 20-30 (if you set it any lower the overhead of forking begins to outweigh the benefits). Also check the memory_limit in php.ini, reduce it to at least 16M. ([http://moodle.org/mod/forum/discuss.php?d=39656 Suggested by Rory Allford])
===Apache パフォーマンス===
* '''MaxClients''' ディレクティブを正しく設定してください。 次の公式を使用して設定値を計算してください (予備のメモリ領域を残すため、利用可能なメモリの 80% を使用します):
MaxClients = 利用可能な合計メモリ * 80% / Apache プロセスの最大メモリ使用量
:Apache プロセスのメモリ使用量は通常 10MB です。一般的な経験則として、MaxClients の値を取得するには、利用可能なメモリ容量を 10MB で割ってください。Apache プロセスの最大メモリ使用量を見つけるには、シェルコマンドの結果より値を読み取ってください:
#ps -ylC httpd --sort:rss
:'''警告''': MaxClients の値をあなたの利用可能なメモリ容量より大きくする誘惑に負けないでください。サーバが実際の RAM より多くを消費し、ディスクスワップが発生し始めることになります。
* 必要なメモリを減らすため、Apache がロードする'''モジュール数'''を httpd.conf ファイルで必要最小限に減らすことを考慮してください。
* '''最新バージョンの Apache''' を使用してください - Apache 2 ではメモリ使用量を大幅に減らすため、メモリモデルが改善されています。
* Unix/Linux システムでは、httpd.conf の「MaxRequestsPerChild」を 20~30 くらいに下げることをお考えください (この設定をさらに低くすると、fork のオーバーヘッドがメリットを上回ることになります)。
* 負荷が高いサーバでは、「KeepAlive Off」に設定する (Moodle ページにリソースまたはアップロードされたイメージへのリンクが設定されていない場合のみ)、または「KeepAliveTimeout」を 2~5 の間に下げることをお考えください。デフォルトは 15 () です - この値を高くすると、それに応じてサーバプロセスがアイドルコネクションを待つことになります。あなたのユーザがページのダウンロードにかかる時間を観察することで、より正確な「KeepAliveTimeout」の値を取得できます。さらなる作業プロセス/スレッドの起動により、オーバーヘッドが発生しますので、 KeepAlive の設定を変更した後は CPU 利用を監視してください。
* 「KeepAlive Off」の代わりの方法として、HTML ファイルとイメージをキャッシュするため、Moodle サーバの前に '''Reverse Proxy server''' を設定することをお考えください。
* あなたが「.htaccess」ファイルを使用していない場合、.htaccess ルックアップを避けるため、'''AllowOverride''' を「AllowOverride None」にしてください。
* content-negotiation (コンテンツ・ネゴシエーション) を避けるため、'''DirectoryIndex''' を正しく設定してください。以下、運用サーバの設定例です:
DirectoryIndex index.php index.html index.htm
* あなたがサーバを開発作業に使用している場合を除いて、'''ExtendedStatus Off''' を設定および mod_info と同様に mod_status を無効にしてください。
* DNS 待ち時間を減らすため、'''HostnamesLookups Off''' (デフォルト) のままにしてください。
* '''TimeOut''' の値を 30~60 (秒) に減らすことを考慮してください。
* Options Multiviews によるディレクトリスキャンを避けるため、'''Options ディレクティブ'''を設定してください。ディスク I/O を減らすには:
Options -Indexes FollowSymLinks
*'''キャッシング''' - Apache では、イメージのような各種ページ要素をローカルメモリでキャッシュして、ページがリクエストされるたびに Apache に要求しないようブラウザに指示することができます。この設定をどのようにするか OS 間で若干異なりますが、以下2つの基本的なステップがあります:
 
# mod_expires をインストールおよび有効化してください - 詳細はドキュメントまたは man ページをご覧ください。
# 次のコードをバーチャルサーバの config ファイル内の root ディレクトリ用 <directory> セクションに追加してください (または、AllowOverrides が有効の場合、.htaccess ファイル):
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 1 seconds"
  ExpiresByType image/gif "access plus 1 week"
  ExpiresByType image/jpeg "access plus 1 week"
  ExpiresByType image/png "access plus 1 week"
  ExpiresByType text/css "access plus 1 week"
  ExpiresByType text/javascript "access plus 1 week"
  ExpiresByType application/x-javascript "access plus 1 week"
  ExpiresByType text/xml "access plus 1 seconds"
</IfModule>
 
この設定の効果は、動的に変わる HTML および XML を除いて、すべてをキャッシュに保持します。このようにして、ロードタイムを大幅に減らすことが可能です。どのくらいの頻度であなたのイメージが変更されるか等を考慮しながら、キャッシュタイムを調整してください。
 
詳細は次のサイトをご覧ください: [http://www.metaskills.net/blog/heuristics/sysadmin/how-to-control-browser-caching-with-apache-2 www.metaskills.net]
 
代わりに「ライトウェイトウェブサーバ ([http://www.lighttpd.org/ lighttpd])」lighttpd と fastCGI モードの PHP を使用することにより、ウェブサーバのパフォーマンスを向上させることができます。Apache に比べて Lighttpd では、メモリー消費を抑えることができます。fastCGI と lighttpd を合わせたプロセスより、1つの Apache プロセスの方がより多くの RAM を必要とします。注意: Lighttpd は相対的に設定および管理が難しく、Apache より多くの時間を要します。
 
===IIS パフォーマンス===
IISパフォーマンス - 下記の場所にあるすべてのレジストリを変更してください:
HKLM\SYSTEM\CurrentControlSet\Services\Inetinfo\Parameters\
* KeepAliveTimeoutと同等な設定項目は「ListenBackLog」です (IIS - レジストリの場所: HKLM\ SYSTEM\ CurrentControlSet\ Services\ Inetinfo\ Parameters)。この値を 2~5 の間に設定してください。
*「MemCacheSize」の値を搭載メモリ総量 (MB) に合わせてください。IIS ではファイルキャッシュに使用します (デフォルトは利用可能メモリの 50% です)。
*「MaxCachedFileSize」の値をファイルキャッシュに保存されるファイルキャッシュの最大サイズ (単位: バイト) に合わせてください。デフォルトは、262,144 (256K) です。
*キャッシュ内のオブジェクトがメモリに保持される時間 (ミリセカンド) を変更するため、「ObjectCacheTTL」と呼ばれる DWORD を新しく作成してください。デフォルトは、30,000 ミリセカンド (30秒) です。


==データベースパフォーマンス==
==データベースパフォーマンス==


* [[Arguments in favour of PostgreSQL]]
Moodle には[http://phplens.com/lens/adodb/docs-perf.htm ADOdbパフォーマンスモニタ]から重要なデータベースパフォーマンス統計を表示するスクリプトが含まれています。下記の例のようにスクリプトを実行してください:
* [[Increasing the database connection lifetime]]
 
* [http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html Tuning MySQL parameters] (advice from the MySQL manual)
http://www.mymoodle.com/admin/dbperformance.php
 
あなたのデータベースサーバのチューニングおよび改善のため、表示されるデータを利用してください。


==各Moodleモジュールのパフォーマンス==
===MySQL パフォーマンス===


Moodle's activity modules, filters, and other plugins can be activated/deactivated. If necessary, you may wish to deactivate some features (such as chat) if not required - but this isn't necessary. Some notes on the performance of certain modules:
次の内容は、あなたの MySQL パフォーマンスを向上させるための my.cnf (Windowsではmy.ini) 特有の設定です。現在の設定値は次のコマンドで確認することができます。
SHOW STATUS;
SHOW VARIABLES;
'''重要''': MySQL サーバの設定を変更する前に、あなたのデータベースを必ずバックアップしてください。my.cnf を少しでも変更した後は、mysqld をリスタートしてください。
*「query_cache_type = 1」 にすることで「query cache」を有効にしてください。ほとんどの Moodle インストールでは、query_cache_size を 36M に、query_cache_min_res_unit を 2K にしてください。データベースの更新が頻繁でない場合、「query cache」はパフォーマンスを改善します。
*「table cache」を正しく設定してください。Moodle 1.6では table_cache = 159に、Moodle 1.7では table_cache = 170 に設定してください。あなたがインストールしたモジュールおよびプラグインの数に応じてこの値は変わりますので注意してください。下記のMySQL命令文を実行して、あなたのサーバの値を調査してください。表示される行 (rows) を確認して、その値を table_cache に設定してください。
mysql>SELECT table_name FROM information_schema.tables WHERE table_schema='yourmoodledbname';
* 「thread cache」を正しく設定してください。この式であなたの「スレッドキャッシュ利用 (thread cache utilization)」ができるだけ100%に近くなるように調整してください:
thread cache utilization (%) = (threads_created / connections) * 100


* The '''Chat''' module is [http://moodle.org/mod/forum/discuss.php?d=37979&parent=175079 said] to be a hog in terms of frequent HTTP requests to the main server. This can be reduced by setting the module to use ''Streamed'' updates, or, if you're using a Unix-based webserver, by running the chat in daemon mode.
* 「key buffer」はMoodle の SELECT クエリーのアクセススピードを改善することができます。適切な値は、インデックスファイル (myi) のサイズに依存します。Moodle 1.6 またはそれ以上 (追加モジュールおよびプラグインなし) での推奨値は、key_buffer_size = 32M です。100 リクエストごとにデータベースを1回読むのが理想的です。あなたの Moodle に値が適切になるよう、次の式に当てはまる key_buffer_size の値を調整してください:
* [http://moodle.org/mod/forum/discuss.php?d=25616&parent=120770 Brief report on performance for 55 students simultaneously using '''Quiz''']
key_read / key_read_requests < 0.01
* The Moodle '''cron''' task is triggered by calling the script ''cron.php''. If this is called over HTTP (e.g. using wget or curl) it can take a large amount of memory on large installations. If it is called by directly invoking the php command (e.g. ''php -f /path/to/moodle/directory/admin/cron.php'') efficiency can be much improved.
key_write / key_write_requests <= 1.0
* Having too many filters active can have serious effects on server load, especially on lower-end systems. The number of active filters has a direct effect on the perceived latency of your site; that is the time taken for each page impression. For best performance, leave the text cache enabled and do not "Filter all strings" unless you have a specific need. If in doubt [[Performance profiling|profile the performance]], and see how your changes affect the processing time.
 
* あなたのユーザが「Too many connections」メッセージを見なくても良いように、「maximum number of connections」を設定してください。この設定は総メモリ使用量に影響を及ぼしますので注意してください。一般的に MySQL コネクションは、1000分の何秒か続きます。ですから非常に負荷の高いサーバだとしても、200 以上の値を設定することは普通ではありません。
* 「高負荷活動」に対する設定。あなたが多くの小テストを含む Moodle を使用して、パフォーマンスに関する問題がある場合、「back_log」の設定値を増やしてみてください (threads_connected の値をモニタして確認してください - この値が上がらないはずです。)。
* 毎週および Moodle のアップグレード後に MySQL テーブルを最適化してください。活動モジュールの大きなデータ削除後、あなたの MySQL テーブルを最適化することをお勧めします (例 学期または年度の終了後)。この作業により、確実にインデックスファイルが最新のものになります。最初にデータベースをバックアップして、次のコマンドを実行してください:
mysql>CHECK TABLE mdl_tablename;
mysql>OPTIMIZE TABLE mdl_tablename;
:一般的にチェックする Moodle のテーブルは、mdl_course_sections、mdl_forum_posts、mdl_log および mdl_sessions (dbsessionsを使用する場合) です。 REPAIR TABLE コマンドを使用して、テーブルのエラーを修正してください (詳細は[http://dev.mysql.com/doc/refman/5.0/en/repair-table.html MySQL manual] をご覧ください)。
* インデックスデータファイルをメンテナンスしてください。毎月またはそれくらいの頻度でMySQLサーバを停止して、次の myisamchk コマンドを実行することをお勧めします。
#myisamchk -a -S /pathtomysql/data/moodledir/*.MYI
:'''警告''': MySQL データベースプロセス (mysqld) を必ず停止してください。停止しない場合、データを喪失するリスクがあります。
* ディスクに一時的に保存されるテーブル数を減らしてください。この設定値は、created_tmp_disk_tables で調べることができます。この値が相対的 ( >5% ) に大きい場合、小さくなるよう tmp_table_size の設定値を変更してください。この設定変更は、RAM の使用に影響を及ぼしますので注意してください。
* Moodleの テーブルでは、「MyISAM」フォーマットを使用します。パフォーマンスの向上に繋がらないため、「InnoDB」は無効にしてください。あなたが InnoDB を使用する必要がある場合のみ、すべての Moodle テーブルを変換してください。次の innodb スクリプトで Moodle テーブルを変換することができます:
 
http://www.mymoodle.com/admin/innodb.php
 
===他のデータベースパフォーマンスリンク===
* [http://en.wikipedia.org/wiki/Memcached memcached] のような分散型キャッシングシステムの使用を考えてください。memcached の場合、セキュリティ機能はありませんので、ファイアーウォールの背後で使用してください。
* PostgresSQL の使用を考えてください。詳細は、[[PostgreSQLを使う理由]]をご覧ください。
* [[データベース接続持続時間を増やす | データベース接続持続時間を増やしてみてください]]。
* [http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html General advice on tuning MySQL parameters] (MySQL マニュアルのアドバイス)
 
==Moodle 管理設定==
* Moodle 1.7以降のバージョンでは、あなたのサーバの'''キャッシュタイプ''' (サイト管理 > サーバ > パフォーマンス > キャッシュタイプ) を有効にしてください。ここでは、いくつかのオプションを利用することができます。
:*あなたがeAcceleratorまたはmmemcachedをインストールしていない場合、「internal」(レコード/内部キャッシュを使用する - 次の箇条書きをご覧ください) を選択してください。
:* あなたが単一のサーバを使用して、'''eAcceleratorを共有メモリサポート'''でコンパイルしている場合、キャッシュタイプの「eaccelerator」オプションを選択してください。
:* あなたが'''共有していないmemcachedサーバ'''を使用している場合、キャッシュタイプに「memcached」を選択した後、「memcachedホスト (memcachedhosts)」にカンマ区切りのサーバIPアドレス一覧を入力してください。
* '''レコード/内部キャッシュ'''を有効にする: サイト管理 > サーバ > パフォーマンス > レコードキャッシュ = True。キャッシュに割り当てる最大メモリ容量を「内部キャッシュ最大値 (intcachemax)」のテキストボックス内で設定してください。この設定により、データベースエンジンキャッシュを使用せずに、データベースレコードの一次キャッシュを有効にすることができます。例) MySQL/PostgreSQLキャッシュ。詳細なディスカッションは、[http://tracker.moodle.org/browse/MDL-7196 このTrackerエントリ]をご覧ください。
* '''言語キャッシュ'''を有効にしてください。
* 大きなログファイルは、時間と共に全体的なパフォーマンスを落とす要因となります。ブラウザに表示されるページのスピードが徐々に遅くなってきた場合、「サイト管理 > サーバ > クリーンアップ」で「ログの保存期間」を減らしてください。
* Moodleでオペレーティングシステムの「zip/unzip」コマンドを使用する場合、PHPベースのzipライブラリを使用するより、パフォーマンスを大きく改善することができます。「管理 > 設定 > 詳細設定」で適切なパスを入力してください。同様に「du」のパスを設定することで、Moodleにおけるディレクトリコンテンツのリスティングスピードを改善することができます。
* '''セキュアウェブコネクション''' ('''http'''ではなく'''https''') を使用することで、ウェブサーバおよびクライアントに対して、過大な負荷がかかります。特にキャッシングが効果的に使用されないため、リクエスト数が劇的に増加してしまいます。この理由から、Moodleのすべてのページに対してhttpsを使用することは、お勧めできません。Moodleの設定でログイン画面のみhttpsを有効にすることはできます。
* あなたの「フィルタ」設定を確認してください。あまりにも多くのフィルタを有効にしていると、特にスペックの低いシステムに深刻な影響を与えます。有効にしているフィルタ数は、それぞれのページ表示に関して、明らかに遅くなるという直接的な影響を及ぼします。
* 「テキストキャッシュ」を有効にしてください。必要な場合以外は「「すべての文字をフィルタする」を有効にしないでください。この設定に疑問がある場合、それぞれの設定を変更して、どのように処理時間に影響を及ぼすか確認してください。
* あなたのサーバの「アンチウイルス」設定を確認してください。これらはセキュリティホールを突かれることを防ぐ「オンデマンド」スキャナーとして有用ですが、ページコンテンツ (word、pptファイル等) をスキャニングすることでパフォーマンスに影響を及ぼす可能性があります。
* コースページの表示にパフォーマンスの問題がある場合、管理画面の「モジュール設定」で、リソースの設定を確認してください。リソースの設定で「filterexternalpages」を有効にするとコースページの表示が遅くなります。パフォーマンスを上げるには「No」に設定してください。
* あなたの「フォーラム設定」を確認してください。パフォーマンスを改善するには、「forum_trackreadposts = No」および「forum_usermarksread = Yes」 (この設定はユーザのフォーラム使用の利便性に関して影響を与えます) にしてください。また、利用者が少ない時間帯に、古い投稿を「既読」テーブルからクリアする時刻  (forum_cleanreadtime) を設定してください。
* あなたが本当に必要とする以外、データベースセッションを使用しないでください。どちらかといえば、ディスクセッションの方がはるかに速い傾向にあります。
 
==各 Moodle モジュールのパフォーマンス==
 
Moodle の活動モジュールフィルタおよび他のプラグインは有効/無効にすることができます。必須ではありませんが、必要に応じていくつかの機能 (チャット等) を無効にしてください。各モジュールに関するメモ:
 
* チャットモジュールは、メインサーバに対して頻繁に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名の学生が同時に小テストを使用する場合のパフォーマンスに関する報告 - 英語]
* Moodle cron タスクは、スクリプト cron.php を呼ぶことで動作します。このスクリプトが HTTP 経由で呼ばれた場合 (wget または curl を使用)、規模の大きな Moodle サイトでは大量のメモリを消費します。php コマンドを使用して直接呼ばれた場合 (php -f /path/to/moodle/directory/admin/cron.php)、大幅に効率が改善されます。


==関連情報==
==関連情報==


*Using Moodleフォーラム [http://moodle.org/mod/forum/view.php?f=94 Servers and Performance]
*[[パフォーマンスFAQ]]
*Using Moodle フォーラム [http://moodle.org/mod/forum/view.php?f=94 サーバおよびパフォーマンス] - 英語
 
moodle.org には、パフォーマンスに関して数多くのディスカッションが投稿されています。以下、いくつかの興味深い、(潜在的に) 有用な投稿です:
 
* [http://moodle.org/mod/forum/discuss.php?d=83057 パフォーマンス問題!] - 英語
* [http://moodle.org/mod/forum/discuss.php?d=57028 パフォーマンスパースペクティブ - 短いスクリプト] - 英語
* [http://moodle.org/mod/forum/discuss.php?d=88927 サーバハードウェア計画に関するコメント] - 英語
* [http://moodle.org/mod/forum/discuss.php?d=102978#p461624 pilにおけるMoodleパフォーマンス by Martin Langhoff] - 英語
 
[[Category:管理者]]
[[Category:パフォーマンス]]


[[Category:Administrator]]
[[es:Rendimiento]]
[[Category:Performance]]
[[en:Performance]]

2010年4月14日 (水) 15:00時点における最新版

少人数のユーザ、数千名のユーザでも、Moodle は快適に動作させることができます。パフォーマンスに関係する要素は、基本的に他の PHP ベースのデータベース主導型システムと同じです。 あなたのサーバを最適化するには「ユーザ数の多寡が大きな要素となること」に焦点を置いてください。例えば、相対的にみて、データベースにアクセスするユーザよりも閲覧するユーザが多い場合、ウェブサーバのパフォーマンスを改善してください。

ベンチマークのベースラインを取得する

最適化を試みる前に、あなたが改善しようと考えるシステムコンポーネントに関するベンチマークのベースラインを取得してください。Linux の場合、LBS をお試しください。Windows の場合、パフォーマンスモニターを使用してください。システムに関する現在のパフォーマンスの数値データを取得することにより、あなたの設定変更がどれだけ実際のインパクトを与えたのか測定することができるようになります。

パフォーマンスを改善するための全体的な照準は、RAM (キャッシング) の使用量およびディスクベースの活動の軽減です。特にスワップファイルの使用を可能な限り減らすことは重要です。あなたのシステムがスワッピングを開始した場合、さらに RAM を追加すべきです。

一般的に「最適化の優先順位」は、第1に「記憶装置 (RAM)」、第2に「記憶装置 (速いハードディスク/ハードディスク設定の改善)」、第3に「プロセッサ (個数および速度)」です。

スケーラビリティ (拡張性)

アプリケーション層を明確に分離することにより、強力に拡張可能な設定を Moodle に施すことができます (詳細は Moodleの大規模インストールをご覧ください)。

通常、小規模サイトでは必要ありませんが、大規模サイトではウェブおよびデータベースを分離したサーバに設置してください。

例えば1つ以上のサーバを使用することで、Moodle をロードバランスすることは可能です。分離されたウェブサーバでは、同じデータベースに問い合わせを行い、同じファイルエリアを参照します。そうでなければ、このようなクラスタリングを適用するには、アプリケーション層の分離だけで十分です。同様に、データベースをクラスタ化することもできます (例 MySQL クラスタ)。しかし、これは簡単な仕事ではなく、エキスパートのサポートが必要です。

ハードウェア設定

メモ: あなたがパフォーマンスを改善できる、簡単かつ効果的な変更は、サーバのメモリを可能な限り増やすことです (例 4GB)。メモリを増やすことで、ディスクへのスワップを減らし、さらに多くのユーザを処理することができるようになります。

  • 最良の「プロセッサ性能」 (例 デュアルまたはデュアルコア) を適用することで、さらなるパフォーマンスの向上を図ることができます。最新の BIOS では、ハイパースレッディングを有効にすることができます。しかし、これが全体的なプロセッサのパフォーマンスに違いをもたらすかどうか、CPUベンチマークツールを使用して確認してください。
  • 可能でしたら、「SATA ドライブ」の代わりに「SCSI ハードディスク」を購入してください。SCSI ドライブが独自の統合プロセッサを持ち、複数ドライブがある場合、それぞれに統合プロセッサを持つのに対し、SATA ドライブはシステム CPU の利用を増大させます。あなたが SATA ドライブを使用する必要がある場合、マザーボードおよびドライブが NCQ (Native Command Queuing) をサポートするかどうかチェックしてください。
  • 「シークタイムの短い」ハードディスクを購入してください。これは全体的なスピード (特に Moodle のレポートにアクセスする時) を改善します。
  • 「スワップファイル」を正しく設定してください。一般的には、物理メモリーの4倍の設定値をお勧めします (この設定値には賛否両論あります - Mitsuhiro Yoshida)。
  • 「RAID ディスクシステム」を使用してください。サーバコンピュータに対して、多くの異なる RAID 設定を行うことができますが、下記の設定は一般的に最も良く動作します:
    • 可能であればハードウェア RAID コントローラーをインストールしてください (ソフトウェア RAID、ハードウェア RAID に関する意見も多々あります - Mitsuhiro Yoshida)。
    • RAID-1 に設定して、オペレーティングシステムとスワップを同じドライブに設定してください。
    • Moodle、ウェブサーバおよびデータベースを RAID-5 に設定した別々のディスクに入れてください。
  • 遅延時間およびスループットを改善するため、「ギガビットイーサーネット」を使用してください。あなたがウェブサーバおよびデータベースサーバを分離して運用している場合、これは特に大切です。
  • あなたの「ネットワークカード」の設定を確認してください。バッファおよびトランスミット/レシーブディスクリプタを増やすこと (これはプロセッサとメモリのオーバヘッドとのバランスをとってください)、TCP チェックサムの計算を OS ではなくカードにオフロードすることでパフォーマンスを改善することができます。

オペレーティングシステム

  • あなたはサーバの「オペレーティングシステム」として、Linux (お勧めです) 、Unix ベースの OS、Windows、Mac OS X を使用することができます。シェルインターフェースのみで構成された場合、一般的に *nix オペレーティングシステムは同じタスクの処理に関して、Mac OS X または Windows サーバよりも少ないメモリを必要とします。さらに Linux にはライセンス料が発生しませんが、あなたが他のオペレーティングシステムを日常的に使用している場合、Linux コマンド等の習得に大きな学習曲線を描くことになります。サーバが SMP で動作している大量のプロセッサを持っている場合、高度にチューニングされた Solaris のような OS の使用を考えてみてください。
  • 最適化するには、OS および「サーバ製造元の使用説明書」を確認してください。
    • Linux に関しては、Linux Performance Team サイトをご覧ください。
    • Linux では hdparm コマンドでハードディスクの状態を詳細に調べることができます。例) hdparm -m16 -d1 でマルチセクタの read/write を有効にできます。DMA マウントのディスクには、async および noatime オプションを付けてください。
    • Windows サーバでは、ネットワークアプリケーションを最適化してください (コントロールパネル >> ネットワーク接続 >> LAN 接続 >> プロパティ >> Microsoft ネットワーク用ファイルとプリンタ共有 >> 最適化)。最適化に関するドキュメントは、Microsoft TechNetサイトでご覧いただけます。

ウェブサーバパフォーマンス

Firefox および firebug エクステンションをインストールすることで、それぞれのページコンポーネントのロードに掛かる時間を観察することができます。また、Yslow エクステンションでは、ウェブサイトの迅速なロードするため、あなたのページを Yahoo 14 rules (video) に関して調査します。

PHP パフォーマンス

  • CPU ロードを軽減するAPC (推奨)、PHPAXcache または eAccelerator のような「PHP アクセラレータ」の使用を強くお勧めします。(あなたの PHP バージョンで適切に動作する PHP アクセラレータを注意深く選定してください。Turck MMCache の開発およびメンテナンスは中止され、PHP 5 で問題が発生しますので注意してください)。PHP ページのキャッシュを TMPFS ファイルシステムに置いてください。
  • CGI としてインストールするより「Apache/IIS ISAPI モジュール」としてインストールする方が、PHP のパフォーマンスは良くなります。
  • ご利用の Moodle が 1.7 より以前のバージョンの場合、php.ini の「memory_limit」を確認して、16M に減らしてください (詳細はこのフォーラムディスカッションをご覧ください)。Moodle 1.7 以降では、「memory_limit」を 40M に設定することをお勧めします。

Apache パフォーマンス

  • MaxClients ディレクティブを正しく設定してください。 次の公式を使用して設定値を計算してください (予備のメモリ領域を残すため、利用可能なメモリの 80% を使用します):
MaxClients = 利用可能な合計メモリ * 80% / Apache プロセスの最大メモリ使用量
Apache プロセスのメモリ使用量は通常 10MB です。一般的な経験則として、MaxClients の値を取得するには、利用可能なメモリ容量を 10MB で割ってください。Apache プロセスの最大メモリ使用量を見つけるには、シェルコマンドの結果より値を読み取ってください:
#ps -ylC httpd --sort:rss
警告: MaxClients の値をあなたの利用可能なメモリ容量より大きくする誘惑に負けないでください。サーバが実際の RAM より多くを消費し、ディスクスワップが発生し始めることになります。
  • 必要なメモリを減らすため、Apache がロードするモジュール数を httpd.conf ファイルで必要最小限に減らすことを考慮してください。
  • 最新バージョンの Apache を使用してください - Apache 2 ではメモリ使用量を大幅に減らすため、メモリモデルが改善されています。
  • Unix/Linux システムでは、httpd.conf の「MaxRequestsPerChild」を 20~30 くらいに下げることをお考えください (この設定をさらに低くすると、fork のオーバーヘッドがメリットを上回ることになります)。
  • 負荷が高いサーバでは、「KeepAlive Off」に設定する (Moodle ページにリソースまたはアップロードされたイメージへのリンクが設定されていない場合のみ)、または「KeepAliveTimeout」を 2~5 の間に下げることをお考えください。デフォルトは 15 (秒) です - この値を高くすると、それに応じてサーバプロセスがアイドルコネクションを待つことになります。あなたのユーザがページのダウンロードにかかる時間を観察することで、より正確な「KeepAliveTimeout」の値を取得できます。さらなる作業プロセス/スレッドの起動により、オーバーヘッドが発生しますので、 KeepAlive の設定を変更した後は CPU 利用を監視してください。
  • 「KeepAlive Off」の代わりの方法として、HTML ファイルとイメージをキャッシュするため、Moodle サーバの前に Reverse Proxy server を設定することをお考えください。
  • あなたが「.htaccess」ファイルを使用していない場合、.htaccess ルックアップを避けるため、AllowOverride を「AllowOverride None」にしてください。
  • content-negotiation (コンテンツ・ネゴシエーション) を避けるため、DirectoryIndex を正しく設定してください。以下、運用サーバの設定例です:
DirectoryIndex index.php index.html index.htm
  • あなたがサーバを開発作業に使用している場合を除いて、ExtendedStatus Off を設定および mod_info と同様に mod_status を無効にしてください。
  • DNS 待ち時間を減らすため、HostnamesLookups Off (デフォルト) のままにしてください。
  • TimeOut の値を 30~60 (秒) に減らすことを考慮してください。
  • Options Multiviews によるディレクトリスキャンを避けるため、Options ディレクティブを設定してください。ディスク I/O を減らすには:
Options -Indexes FollowSymLinks
  • キャッシング - Apache では、イメージのような各種ページ要素をローカルメモリでキャッシュして、ページがリクエストされるたびに Apache に要求しないようブラウザに指示することができます。この設定をどのようにするか OS 間で若干異なりますが、以下2つの基本的なステップがあります:
  1. mod_expires をインストールおよび有効化してください - 詳細はドキュメントまたは man ページをご覧ください。
  2. 次のコードをバーチャルサーバの config ファイル内の root ディレクトリ用 <directory> セクションに追加してください (または、AllowOverrides が有効の場合、.htaccess ファイル):
<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 1 seconds"
 ExpiresByType text/html "access plus 1 seconds"
 ExpiresByType image/gif "access plus 1 week"
 ExpiresByType image/jpeg "access plus 1 week"
 ExpiresByType image/png "access plus 1 week"
 ExpiresByType text/css "access plus 1 week"
 ExpiresByType text/javascript "access plus 1 week"
 ExpiresByType application/x-javascript "access plus 1 week"
 ExpiresByType text/xml "access plus 1 seconds"
</IfModule>

この設定の効果は、動的に変わる HTML および XML を除いて、すべてをキャッシュに保持します。このようにして、ロードタイムを大幅に減らすことが可能です。どのくらいの頻度であなたのイメージが変更されるか等を考慮しながら、キャッシュタイムを調整してください。

詳細は次のサイトをご覧ください: www.metaskills.net

代わりに「ライトウェイトウェブサーバ (lighttpd)」lighttpd と fastCGI モードの PHP を使用することにより、ウェブサーバのパフォーマンスを向上させることができます。Apache に比べて Lighttpd では、メモリー消費を抑えることができます。fastCGI と lighttpd を合わせたプロセスより、1つの Apache プロセスの方がより多くの RAM を必要とします。注意: Lighttpd は相対的に設定および管理が難しく、Apache より多くの時間を要します。

IIS パフォーマンス

IISパフォーマンス - 下記の場所にあるすべてのレジストリを変更してください:

HKLM\SYSTEM\CurrentControlSet\Services\Inetinfo\Parameters\
  • KeepAliveTimeoutと同等な設定項目は「ListenBackLog」です (IIS - レジストリの場所: HKLM\ SYSTEM\ CurrentControlSet\ Services\ Inetinfo\ Parameters)。この値を 2~5 の間に設定してください。
  • 「MemCacheSize」の値を搭載メモリ総量 (MB) に合わせてください。IIS ではファイルキャッシュに使用します (デフォルトは利用可能メモリの 50% です)。
  • 「MaxCachedFileSize」の値をファイルキャッシュに保存されるファイルキャッシュの最大サイズ (単位: バイト) に合わせてください。デフォルトは、262,144 (256K) です。
  • キャッシュ内のオブジェクトがメモリに保持される時間 (ミリセカンド) を変更するため、「ObjectCacheTTL」と呼ばれる DWORD を新しく作成してください。デフォルトは、30,000 ミリセカンド (30秒) です。

データベースパフォーマンス

Moodle にはADOdbパフォーマンスモニタから重要なデータベースパフォーマンス統計を表示するスクリプトが含まれています。下記の例のようにスクリプトを実行してください:

http://www.mymoodle.com/admin/dbperformance.php

あなたのデータベースサーバのチューニングおよび改善のため、表示されるデータを利用してください。

MySQL パフォーマンス

次の内容は、あなたの MySQL パフォーマンスを向上させるための my.cnf (Windowsではmy.ini) 特有の設定です。現在の設定値は次のコマンドで確認することができます。

SHOW STATUS;
SHOW VARIABLES; 

重要: MySQL サーバの設定を変更する前に、あなたのデータベースを必ずバックアップしてください。my.cnf を少しでも変更した後は、mysqld をリスタートしてください。

  • 「query_cache_type = 1」 にすることで「query cache」を有効にしてください。ほとんどの Moodle インストールでは、query_cache_size を 36M に、query_cache_min_res_unit を 2K にしてください。データベースの更新が頻繁でない場合、「query cache」はパフォーマンスを改善します。
  • 「table cache」を正しく設定してください。Moodle 1.6では table_cache = 159に、Moodle 1.7では table_cache = 170 に設定してください。あなたがインストールしたモジュールおよびプラグインの数に応じてこの値は変わりますので注意してください。下記のMySQL命令文を実行して、あなたのサーバの値を調査してください。表示される行 (rows) を確認して、その値を table_cache に設定してください。
mysql>SELECT table_name FROM information_schema.tables WHERE table_schema='yourmoodledbname';
  • 「thread cache」を正しく設定してください。この式であなたの「スレッドキャッシュ利用 (thread cache utilization)」ができるだけ100%に近くなるように調整してください:
thread cache utilization (%) = (threads_created / connections) * 100
  • 「key buffer」はMoodle の SELECT クエリーのアクセススピードを改善することができます。適切な値は、インデックスファイル (myi) のサイズに依存します。Moodle 1.6 またはそれ以上 (追加モジュールおよびプラグインなし) での推奨値は、key_buffer_size = 32M です。100 リクエストごとにデータベースを1回読むのが理想的です。あなたの Moodle に値が適切になるよう、次の式に当てはまる key_buffer_size の値を調整してください:
key_read / key_read_requests < 0.01
key_write / key_write_requests <= 1.0
  • あなたのユーザが「Too many connections」メッセージを見なくても良いように、「maximum number of connections」を設定してください。この設定は総メモリ使用量に影響を及ぼしますので注意してください。一般的に MySQL コネクションは、1000分の何秒か続きます。ですから非常に負荷の高いサーバだとしても、200 以上の値を設定することは普通ではありません。
  • 「高負荷活動」に対する設定。あなたが多くの小テストを含む Moodle を使用して、パフォーマンスに関する問題がある場合、「back_log」の設定値を増やしてみてください (threads_connected の値をモニタして確認してください - この値が上がらないはずです。)。
  • 毎週および Moodle のアップグレード後に MySQL テーブルを最適化してください。活動モジュールの大きなデータ削除後、あなたの MySQL テーブルを最適化することをお勧めします (例 学期または年度の終了後)。この作業により、確実にインデックスファイルが最新のものになります。最初にデータベースをバックアップして、次のコマンドを実行してください:
mysql>CHECK TABLE mdl_tablename;
mysql>OPTIMIZE TABLE mdl_tablename;
一般的にチェックする Moodle のテーブルは、mdl_course_sections、mdl_forum_posts、mdl_log および mdl_sessions (dbsessionsを使用する場合) です。 REPAIR TABLE コマンドを使用して、テーブルのエラーを修正してください (詳細はMySQL manual をご覧ください)。
  • インデックスデータファイルをメンテナンスしてください。毎月またはそれくらいの頻度でMySQLサーバを停止して、次の myisamchk コマンドを実行することをお勧めします。
#myisamchk -a -S /pathtomysql/data/moodledir/*.MYI
警告: MySQL データベースプロセス (mysqld) を必ず停止してください。停止しない場合、データを喪失するリスクがあります。
  • ディスクに一時的に保存されるテーブル数を減らしてください。この設定値は、created_tmp_disk_tables で調べることができます。この値が相対的 ( >5% ) に大きい場合、小さくなるよう tmp_table_size の設定値を変更してください。この設定変更は、RAM の使用に影響を及ぼしますので注意してください。
  • Moodleの テーブルでは、「MyISAM」フォーマットを使用します。パフォーマンスの向上に繋がらないため、「InnoDB」は無効にしてください。あなたが InnoDB を使用する必要がある場合のみ、すべての Moodle テーブルを変換してください。次の innodb スクリプトで Moodle テーブルを変換することができます:
http://www.mymoodle.com/admin/innodb.php

他のデータベースパフォーマンスリンク

Moodle 管理設定

  • Moodle 1.7以降のバージョンでは、あなたのサーバのキャッシュタイプ (サイト管理 > サーバ > パフォーマンス > キャッシュタイプ) を有効にしてください。ここでは、いくつかのオプションを利用することができます。
  • あなたがeAcceleratorまたはmmemcachedをインストールしていない場合、「internal」(レコード/内部キャッシュを使用する - 次の箇条書きをご覧ください) を選択してください。
  • あなたが単一のサーバを使用して、eAcceleratorを共有メモリサポートでコンパイルしている場合、キャッシュタイプの「eaccelerator」オプションを選択してください。
  • あなたが共有していないmemcachedサーバを使用している場合、キャッシュタイプに「memcached」を選択した後、「memcachedホスト (memcachedhosts)」にカンマ区切りのサーバIPアドレス一覧を入力してください。
  • レコード/内部キャッシュを有効にする: サイト管理 > サーバ > パフォーマンス > レコードキャッシュ = True。キャッシュに割り当てる最大メモリ容量を「内部キャッシュ最大値 (intcachemax)」のテキストボックス内で設定してください。この設定により、データベースエンジンキャッシュを使用せずに、データベースレコードの一次キャッシュを有効にすることができます。例) MySQL/PostgreSQLキャッシュ。詳細なディスカッションは、このTrackerエントリをご覧ください。
  • 言語キャッシュを有効にしてください。
  • 大きなログファイルは、時間と共に全体的なパフォーマンスを落とす要因となります。ブラウザに表示されるページのスピードが徐々に遅くなってきた場合、「サイト管理 > サーバ > クリーンアップ」で「ログの保存期間」を減らしてください。
  • Moodleでオペレーティングシステムの「zip/unzip」コマンドを使用する場合、PHPベースのzipライブラリを使用するより、パフォーマンスを大きく改善することができます。「管理 > 設定 > 詳細設定」で適切なパスを入力してください。同様に「du」のパスを設定することで、Moodleにおけるディレクトリコンテンツのリスティングスピードを改善することができます。
  • セキュアウェブコネクション (httpではなくhttps) を使用することで、ウェブサーバおよびクライアントに対して、過大な負荷がかかります。特にキャッシングが効果的に使用されないため、リクエスト数が劇的に増加してしまいます。この理由から、Moodleのすべてのページに対してhttpsを使用することは、お勧めできません。Moodleの設定でログイン画面のみhttpsを有効にすることはできます。
  • あなたの「フィルタ」設定を確認してください。あまりにも多くのフィルタを有効にしていると、特にスペックの低いシステムに深刻な影響を与えます。有効にしているフィルタ数は、それぞれのページ表示に関して、明らかに遅くなるという直接的な影響を及ぼします。
  • 「テキストキャッシュ」を有効にしてください。必要な場合以外は「「すべての文字をフィルタする」を有効にしないでください。この設定に疑問がある場合、それぞれの設定を変更して、どのように処理時間に影響を及ぼすか確認してください。
  • あなたのサーバの「アンチウイルス」設定を確認してください。これらはセキュリティホールを突かれることを防ぐ「オンデマンド」スキャナーとして有用ですが、ページコンテンツ (word、pptファイル等) をスキャニングすることでパフォーマンスに影響を及ぼす可能性があります。
  • コースページの表示にパフォーマンスの問題がある場合、管理画面の「モジュール設定」で、リソースの設定を確認してください。リソースの設定で「filterexternalpages」を有効にするとコースページの表示が遅くなります。パフォーマンスを上げるには「No」に設定してください。
  • あなたの「フォーラム設定」を確認してください。パフォーマンスを改善するには、「forum_trackreadposts = No」および「forum_usermarksread = Yes」 (この設定はユーザのフォーラム使用の利便性に関して影響を与えます) にしてください。また、利用者が少ない時間帯に、古い投稿を「既読」テーブルからクリアする時刻 (forum_cleanreadtime) を設定してください。
  • あなたが本当に必要とする以外、データベースセッションを使用しないでください。どちらかといえば、ディスクセッションの方がはるかに速い傾向にあります。

各 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)、大幅に効率が改善されます。

関連情報

moodle.org には、パフォーマンスに関して数多くのディスカッションが投稿されています。以下、いくつかの興味深い、(潜在的に) 有用な投稿です: