パフォーマンスの推奨事項
- パフォーマンスの推奨事項
- パフォーマンス設定
- パフォーマンスの概要
- キャッシング
- パフォーマンスに関するよくある質問
- MUC FAQ
Moodleは、小さな使用レベルで、または何千人ものユーザに評価尺度アップして、非常にうまく機能するようにすることができます。パフォーマンスに関わる要因は、基本的にPHPベースのデータベース駆動型システムの場合と同じです。サーバーを最適化しようとするときは、ユーザーに最も大きな影響を与える要因に集中するようにしてください。たとえば、データベースにアクセスするよりも比較的多くのユーザーが閲覧している場合は、Webサーバーのパフォーマンスを向上させるようにしてください。
内容
ベースラインベンチマークを取得する
最適化を試みる前に、改善しようとしているシステムのコンポーネントのベースラインベンチマークを取得する必要があります。 Linuxの場合はLBSを、Windowsの場合はパフォーマンスモニタを使用してください。システムの現在のパフォーマンスに関する定量的なデータが得られたら、行った変更が実際に影響を与えたかどうかを判断できます。
パフォーマンスを向上させるための調整の全体的な目的は、RAM(キャッシュ)を使用し、ディスクベースの活動を減らすことです。できる限りスワップファイルの使用を排除しようとすることが特に重要です。システムが交換を始めた場合、これはあなたがより多くのRAMを必要としているというサインです。
最適化順序の優先順位は、通常、1次ストレージ(より多くのRAM)、2次ストレージ(より高速のハードディスク/改良されたハードディスク構成)、プロセッサ(より高速)です。
スケーラビリティ
Moodleのデザイン(アプリケーションレイヤの明確な分離を伴う)は、非常にスケーラブルな設定を可能にします。 ( 大規模なMoodleインストールのリストを確認してください。)
大規模サイトでは通常、Webサーバーとデータベースを別々のサーバーに分割しますが、小規模インストールでは通常これは必要ありません。
例えば複数のウェブサーバーを使用することで、Moodleのインストールを負荷分散することが可能です。別々のWebサーバーは同じデータベースを照会し、同じファイルストアとキャッシュ領域を参照する必要があります( キャッシングを参照)。それ以外の場合、アプリケーション層の分離はこの種のクラスタリングを実行可能にするのに十分です。同様に、データベースはサーバのクラスタ(MySQLのクラスタなど)でもかまいませんが、これは簡単な作業ではないため、Moodleパートナーなどから専門的なサポートを受ける必要があります。
サーバークラスタ
Moodleフォーラムディスカッションを使用する:
ハードウェア構成
注意 :パフォーマンスを向上させるためにできる最も早く、最も効果的な変更は、WebサーバーのRAM容量を増やすことです。できるだけ多くの容量を確保してください (例:4GB以上)。一次メモリを増やすと、プロセスをディスクにスワップする必要性が減り、サーバーがより多くのユーザーを処理できるようになります。
- あなたができる最高のプロセッサ能力 、すなわちデュアルまたはデュアルコアプロセッサを得ることによってより良い性能が得られる。最新のBIOSではハイパースレッディングを有効にできますが、これがCPUベンチマークツールを使用してプロセッサの全体的なパフォーマンスに影響を与えるかどうかを確認してください。
- 余裕がある場合は、SATAドライブの代わりにSCSIハードディスクを使用してください。 SATAドライブはシステムのCPU使用率を向上させますが、SCSIドライブは独自の内蔵プロセッサを搭載しており、複数のドライブがある場合は独自のものになります。 SATAドライブが必要な場合は、マザーボードとドライブ自体がNCQ(Native Command Queuing)をサポートしていることを確認してください。
- シーク時間の短いハードディスクを購入する。特にMoodleのレポートにアクセスするとき、これはあなたのシステムの全体的なスピードを向上させます。
- スワップファイルのサイズを正しく設定してください。一般的なアドバイスはそれを4 x物理RAMに設定することです。
- RAIDディスクシステムを使用してください。作成可能なRAID構成は多数ありますが、一般的には次の方法が最適です。
- ハードウェアRAIDコントローラを取り付けます(可能であれば)。
- RAID 1として構成された1セットのディスク上のオペレーティングシステムとスワップドライブ。
- Moodle、Webサーバ、データベースサーバはRAID-5として設定された別のディスクセットにあります。
- あなたの 'moodledata'領域が比較的遅いストレージ(例えばNASデバイスへのNFSマウント)上にあるつもりであるなら(おそらくこのストレージに書き込む)デフォルトのキャッシュ設定でパフォーマンスの問題があるでしょう。 キャッシュのページを見て、代替案を検討してください。 SANデバイスおよびファイバーチャネルで GlusterFS / OCFS2 / GFS2を使用すると、パフォーマンスを向上させることができます(Moodle フォーラムスレッド 、 NFSパフォーマンスチューニング に関する詳細情報を参照してください)。
- 待ち時間とスループットを向上させるには、 ギガビットイーサネットを使用してください。 Webサーバとデータベースサーバを別々のホストに分ける場合、これは特に重要です。
- ネットワークカードの設定を確認してください。バッファと送受信ディスクリプタの使用を増やし(プロセッサとメモリのオーバーヘッドとのバランスを取って)、TCPチェックサムの計算をOSではなくカードにオフロードすることで、パフォーマンスを向上させることができます。
- このケーススタディを読んで、300人のユーザーによるサーバーストレステストについて調べてください。
- ネットワークトラフィックとサーバーの負荷に関するこの付随レポートを参照してください。
- Educause(VMWareを使用)でのこのSFSUプレゼンテーションも参照してください。 [1]
オペレーティング・システム
- サーバーのオペレーティングシステムには、 Linux (推奨)、Unixベース、Windows、またはMac OS Xを使用できます。 * nixオペレーティングシステムは、通常、Mac OS XまたはWindowsサーバよりも、サーバがシェルインタフェースのみで構成されている場合と同じタスクを実行するために必要なメモリが少なくて済みます。さらに、Linuxにはライセンス料はかかりませんが、他のオペレーティングシステムに慣れている人にとっては大きな習熟曲線になる可能性があります。 SMPを実行しているプロセッサが多数ある場合は、 Solarisなどの高度に調整されたOSの使用を検討することもできます。
- 最適化手順については、ご使用のOSおよびベンダー固有の指示を確認してください。
- Linuxの場合は、 Linux Performance Teamのサイトを見てください。
- Linuxの場合は、hdparmコマンドを調べます。たとえば、hdparm -m16 -d1を使用すると、複数のセクタとDMAで読み取り/書き込みを有効にできます。 "async"と "noatime"オプションでディスクをマウントします。
- Windowsの場合は、ネットワークアプリケーション(コントロールパネル、ネットワーク接続、LAN接続、プロパティ、Microsoftネットワーク用ファイルとプリンタの共有、プロパティ、最適化)に合わせてサーバーを最適化するように設定します。 Microsoft TechNetサイトで最適化文書を検索することもできます。
Webサーバーのパフォーマンス
Firefoxとfirebugエクステンションをインストールすると、各ページコンポーネントがロードされるのにかかる時間を監視できます。また、 YslowエクステンションはあなたのページをYahooの14のルール 、 あなたのWebサイトをスピードアップするためのフルテキストのベストプラクティス 、速いロードするWebサイトのための( ビデオ )に対してあなたのページを評価します。
PHPのパフォーマンス
- APC 、 PHPA 、 Xcache 、 WinCache 、 eAcceleratorなど、CPUの負荷を軽減するためにPHPアクセラレータを使用することを強くお勧めします。 (あなたのバージョンのPHPでうまく動作することが知られているPHPアクセラレータを選択するように注意してください。TurckMMCacheはもはや維持されず 、PHP 5で失敗を引き起こす可能性があることに注意してください)。 PHP 5.5以降にはOpCacheが含まれており、Moodleによって完全にサポートされ推奨されています。
- 読み書きパフォーマンスの向上は、キャッシュされたPHPページをTMPFSファイルシステムに配置することで改善できます。ただし、停電が発生したりサーバーが再起動されたりすると、キャッシュの内容が失われることに注意してください。
- PHPのパフォーマンスは、(CGIではなく) Apache / IIS 6 ISAPIモジュールとしてインストールした方が優れています 。 IIS 7.0 / 7.5(Windows Server 2008 / R2)ユーザーは、最高のパフォーマンスを得るためにFastCGIインストールを選択する必要があります。
- また、php.iniのmemory_limitを確認し、1.7より前のMoodleバージョンでは16Mに減らしてください ( このフォーラムの議論を参照 )。 Moodle 1.7以降では、memory_limitの値は40Mにすることをお勧めします。 PHP 5.2.1以降 、memory_limitディレクティブのデフォルト値は128Mです。
- PHP_settings_by_Moodle_versionもご覧ください。
- PHP-FPM (apache付き)を使用してください。
HowToをインストールする
- CentOS 5.x上のAPC(Linux)
- APC on Debian(Linux)
- Debian上のMemCacheモジュール(Apache 2およびPHP 5)
- CentOS 5.xへのMemcacheのインストール(Linux)
- CentOS 5.xへのeAcceleratorのインストール(Linux)
- UbuntuサーバへのeAcceleratorのインストール(Linux)
Apacheのパフォーマンス
- WindowsサーバーでApacheを使用している場合は、公式のApacheダウンロードと比較してパフォーマンスと安定性が向上していると報告されているApache Loungeからのビルドを使用してください。これは非公式のビルドなので、公式リリースに遅れないように注意してください。
- MaxRequestWorkersディレクティブを正しく設定してください (Apache 2.4より前のMaxClients )。この式を使って手助けをします(これは80%の使用可能メモリーを使用して予備のスペースを確保します)。
MaxRequestWorkers =利用可能なメモリの合計* 80%/ Apacheプロセスの最大メモリ使用量
- apacheプロセスのメモリ使用量は通常10MBですが、Moodleはプロセスあたり最大100MBまで簡単に使用できます。そのため、一般的な経験則では、使用可能なメモリをメガバイトで100で割ってMaxClientsの控えめな設定にします。あなたはMoodleサーバ上でMaxRequestWorkersをデフォルトの150から下げている可能性があります。より正確な推定値を得るには、シェルコマンドから値を読みます。
#ps -ylC httpd --sort:rss
- MaxRequestWorkersの値を256を超えて増やす必要がある場合は、 ServerLimitディレクティブも設定する必要があります。
- 警告 :MaxRequestWorkersの値を使用可能なメモリよりも大きく設定したくない場合は、使用可能なメモリよりも多くのメモリが消費され、ディスクへのスワップが開始されます。
- Apacheがhttpd.confファイルにロードするモジュールの数を、必要なメモリーを減らすのに必要な最小数まで減らすことを検討してください。
- 最新バージョンのApacheを使用する - Apache 2には、メモリ使用量をさらに減らす改良されたメモリモデルがあります。
- Unix / Linuxシステムでは、httpd.conf内のMaxConnectionsPerChild (Apache 2.4より前のMaxRequestsPerChild )を20-30まで低くすることを検討してください(これを低く設定すると、フォークのオーバーヘッドがメリットを上回るようになります)。
- 負荷の高いサーバーでは、 KeepAliveをオフに設定する(Moodleページにリソースへのリンクやアップロードされた画像が含まれていない場合のみ)か、 KeepAliveTimeoutを2から5の間にすることを検討してください。デフォルトは15(秒)です。より多くのサーバープロセスは、アイドル状態の接続を待機し続けます。 KeepAliveTimeoutのより正確な値は、ユーザーがページをダウンロードするのにかかる時間を観察することによって得られます。 KeepAlive変数を変更した後は、より多くのワーカープロセス/スレッドを開始する際に追加のオーバーヘッドが生じる可能性があるため、CPU使用率を監視してください。
- KeepAlive Offを使用する代わりに、Moodleサーバーの前にリバースプロキシサーバーを設定して、画像付きのHTMLファイルをキャッシュすることを検討してください。その後、あなたはApacheをMoodleサーバ上でキープアライブを使用するように戻すことができます。
- .htaccessファイルを使用しない場合は、.htaccess参照を防ぐためにAllowOverride変数をAllowOverride Noneに設定します。
- コンテンツネゴシエーションを回避するために、 DirectoryIndexを正しく設定してください。これが本番サーバーからの例です。
DirectoryIndex index.php index.html index.htm
- サーバーで開発作業をしているのでない限り、 ExtendedStatusをOffに設定し、mod_infoおよびmod_statusを無効にします。
- DNSの待ち時間を短縮するには、 HostnameLookupsをオフのままにします(デフォルト)。
- TimeOutの値を30から60(秒)に減らすことを検討してください。
- Optionsディレクティブの場合は、ディレクトリスキャンを実行するため、Options Multiviewsを避けます。ディスクI / Oを減らすためにさらに使用する
オプション - インデックスFollowSymLinks
- HTTP応答のサイズを小さくすることで、圧縮によって応答時間が短縮されます。
- mod_deflateをインストールして有効にします - ドキュメントまたはmanページを参照してください。
- このコードを、ルートディレクトリの<directory>セクション内(またはAllowOverridesがオンの場合は.htaccessファイル内)の仮想サーバー設定ファイルに追加します。
<ifModule mod_deflate.c> AddOutputFilterByType DEFLATEテキスト/ htmlテキスト/プレーンテキスト/ xmlテキスト/ x-jsテキスト/ javascriptテキスト/ cssアプリケーション/ javascript </ifmodule>
IISのパフォーマンス
すべてレジストリ内のこの場所を変更します。
HKLM \ SYSTEM \ CurrentControlSet \ Services \ Inetinfo \ Parameters \
- KeepAliveTimeoutと同等のものはListenBackLogです (IIS - レジストリの場所はHKLM \ SYSTEM \ CurrentControlSet \ Services \ Inetinfo \ Parametersです)。これを2から5の間に設定します。
- MemCacheSize値を変更して、IISがファイルキャッシュに使用するメモリ量(Mb)(デフォルトでは使用可能メモリの50%)を調整します。
- MaxCachedFileSizeを変更して、ファイルキャッシュにキャッシュされるファイルの最大サイズをバイト単位で調整します。デフォルトは262,144(256K)です。
- ObjectCacheTTLという新しいDWORDを作成して、キャッシュ内のオブジェクトがメモリに保持される時間の長さ(ミリ秒単位)を変更します。デフォルトは30,000ミリ秒(30秒)です。
Lighttpd、NginX、およびCherokeeのパフォーマンス
FastCGIモードでPHPと組み合わせてlighttpd 、 nginx 、 cherokeeなどの軽量 Webサーバーを使用することで、サーバーのパフォーマンスを向上させることができます。 Lighttpdのは、もともとの概念実証として作成された[2]対処するC10kの問題を 、主にメモリ・限られたサーバに推奨しながら、そのデザインの起源と非同期IOモデルは、適切かつ実績のある作り[3]のための代替HTTPサーバMoodleを含む高負荷のWebサイトおよびWebアプリケーション。追加情報、設定例、リンクについてはMoodleDocs Lighttpdページをご覧ください 。
あるいは、 lighttpdとnginxの両方が、バックエンドサーバーの負荷を軽減するためにロードバランサやリバースプロキシとして機能することができ[4] 、既存のサーバーの実際のソフトウェア変更を必要とせずに利益を提供します。
特にウェブサービスやMoodleネットワーキングなどの拡張機能を使用している場合は、これらが最もテストされていないサーバ環境になる可能性が高いことに注意してください。比較的シンプルな設定で頻繁に使用されるMoodleサイトのためにおそらくそれらは最もよく考慮されます。
X送信ファイル
X-SendfileモジュールはMoodleから大きなファイルを送信する際のパフォーマンスを向上させます。この機能を使用するようにWebサーバとMoodleを設定することをお勧めします。
Webサーバーを設定します。
- Apache - https://tn123.org/mod_xsendfile/
- Lighttpd - https://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file
- Nginx - https://wiki.nginx.org/XSendfile
config.phpでサポートを有効にします(config-dist.phpを参照)。
// $ CFG-> xsendfile = 'X-Sendfile'; // Apache {@see https://tn123.org/mod_xsendfile/} // $ CFG-> xsendfile = 'X-LIGHTTPD - 送信ファイル'; // Lighttpd {@see https://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file} // $ CFG-> xsendfile = 'X-Accel-Redirect'; // Nginx {@see https://wiki.nginx.org/XSendfile}
サーバーの実装に必要な場合は、ファイルの場所のプレフィックスを設定します。
// $ CFG-> xsendfilealiases = array( // '/ dataroot /' => $ CFG-> dataroot、 // '/ cachedir /' => '/ var / www / moodle / cache'、//カスタムの$ CFG-> cachedirの場所 // '/ localcachedir /' => '/ var / local / cache'、//カスタム$ CFG-> localcachedirロケーションの場合 // '/ tempdir /' => '/ var / www / moodle / temp'、//カスタム$ CFG-> tempdirロケーションの場合 // '/ filedir' => '/ var / www / moodle / filedir'、//カスタム$ CFG-> filedirの場所 //);
データベースの性能
MySQLのパフォーマンス
以下はMySQL特有の設定で、my.cnf(Windowsではmy.ini)のパフォーマンスを向上させるために調整できます。ファイルには設定とその値のリストが含まれています。現在の値を見るにはこれらのコマンドを使います。
ステータスを表示。 変数を表示する。
重要 :MySQLサーバーの設定を変更する前に、データベースのバックアップを作成する必要があります。 my.cnfを変更したら、mysqldを再起動します。
可能であれば、MySQLサーバーに対してMySQLTunerツールを実行し、現在の負荷、ステータス、および変数に基づいて、以下の設定のほとんどに適切な構成値を自動的に計算します。
- クエリキャッシュを有効にする
query_cache_type = 1
ほとんどのMoodleインストールでは、以下を設定してください。
query_cache_size = 36M query_cache_min_res_unit = 2K。
データベースで更新をほとんど行わない場合、クエリキャッシュはパフォーマンスを向上させます。
- テーブルキャッシュを正しく設定してください 。 Moodle 1.6用
table_cache = 256#(MySQLの場合はtable_open_cache> 5.1.2)
(分)、そしてMoodle 1.7セット用
table_cache = 512#(MySQLの場合はtable_open_cache> 5.1.2)
(分)テーブルキャッシュはすべてのスレッド(接続)で使用されるため、opens_tablesの値を監視してさらに調整します - opens_tables> 3 * table_cache(MySQL> 5.1.2の場合はtable_open_cache)の場合は、OSの上限までtable_cacheを増やします。 table_cacheの数値も、インストールしたモジュールとプラグインの数によって変わります。下記のmysqlステートメントを実行してサーバーの番号を見つけてください。返された番号を調べて、table_cacheをこの値に設定してください。
mysql> SELECT COUNT(table_name)from information_schema.tables WHERE table_schema = 'yourmoodledbname';
- スレッドキャッシュを正しく設定してください。この式によって、スレッドキャッシュの使用率ができるだけ100%に近くなるように値を調整します。
スレッドキャッシュ使用率(%)=(threads_created / connections)* 100
- キーバッファはMoodleのSELECTクエリへのアクセス速度を向上させることができます。正しいサイズはインデックスファイルのサイズ(.myi)によって異なります。Moodle1.6以降(追加のモジュールやプラグインなし)では、この値の推奨値はkey_buffer_size = 32Mです。理想的には、データベースが100要求ごとにディスクから1回読み取るようにしたいので、次の式が成り立つようにkey_buffer_sizeの値を調整して、インストールに適した値になるようにモニターしてください。
key_read / key_read_requests <0.01 key_write / key_write_requests <= 1.0
- ユーザーに "Too many connections"メッセージが表示されないように最大接続数を設定します。これが使用される合計メモリに影響を与えるかもしれないように注意します。 MySQL接続は通常数ミリ秒続くので、この値が200を超えるのは、高負荷のサーバーでも珍しいことです。
- 高いバースト活動を管理します。あなたのMoodleインストールがたくさんの小テストを使用していて、パフォーマンスの問題が発生している場合(threads_connectedの値を監視することでチェックしてください - それは上昇してはいけません)back_logの値を増やすことを検討してください。
- 毎週、そしてMoodleをアップグレードした後にあなたのテーブルを最適化してください 。学期の終わりや学年度の終わりなど、大量のデータを削除する演習を行った後も、テーブルを最適化することをお勧めします。これにより、インデックスファイルが最新のものになります。まずデータベースをバックアップしてから、次のコマンドを使用してください。
mysql> CHECK TABLE mdl_tablename; mysql>最適化テーブルmdl_tablename;
- 確認するMoodleの共通テーブルは、mdl_course_sections、mdl_forum_posts、mdl_log、およびmdl_sessionsです(dbsessionsを使用している場合)。どんなエラーもREPAIR TABLEを使って修正する必要があります ( MySQLのマニュアルとこのフォーラムのスクリプトを見てください)。
- キー配布を維持します 。毎月かそこらmysqlサーバーを停止し、これらのmyisamchkコマンドを実行することをお勧めします。
#myisamchk -a -S /pathtomysql/data/moodledir/*.MYI
- 警告 :myisamchkコマンドを実行する前に、mysqlデータベースプロセス(mysqld)を停止する必要があります。そうしないと、データが失われる危険があります。
- ディスクに保存される一時テーブルの数を減らします。これをcreated_tmp_disk_tables値で確認してください。これが比較的大きい場合(> 5%)、減少するまでtmp_table_sizeを増やしてください。これはRAM使用量に影響を与えることに注意してください。
PostgreSQLのパフォーマンス
PostgreSQLを調整することについては( このような)いくつかの良い論文があります。そして、Moodleの場合は一般的な場合と変わらないようです。
最初に認識しておくべきことは、チューニングを本当に気にする必要がある場合は、データベースサーバー用に別のマシンを使用する必要があるということです。別のマシンを使用していないのであれば、多くのパフォーマンスの質問に対する答えは、アプリケーションの他の部分のメモリ要件によってかなり混乱しています。
自分が何をしているのかわからなければ、おそらくautovacuumを有効にするべきです。多くのeラーニングサイトでは、予測される期間の使用率が低いため、自動バキュームを無効にして、その時点で特定のバキュームを実行することをお勧めします。または、自動バキュームを実行したまま静かに、毎週完全に掃除機をかけてください。
shared_buffersを合理的な値に設定してください 。 8.1までのバージョンでは、私のテストでは、ピークパフォーマンスは10000未満のバッファでほぼ常に得られることがわかっています。そのようなバージョンを使用し、512M以上のRAMがある場合はshared_buffersを10,000(8MB)に設定してください。
バッファ管理は8.2で大きな見直しをしました、そして、 "妥当な"は今はるかに大きい数です。私は8.2でパフォーマンステストを実施したことはありませんが、他の人々からの推奨は一般的にshared_buffersをメモリでもっと評価尺度するべきであり、100,000(80MB)のような値まで恩恵を受け続けることです。システムRAMの1〜2%の使用を検討してください。
PostgreSQLはまた、オペレーティングシステムがファイルをキャッシュしていると仮定しますので、 effective_cache_sizeを妥当な値に設定することもまた良い考えです。妥当な値は通常(総RAM - プログラムが使用中のRAM)です。 Linuxを実行していて、システムを1日か2日稼働させたままにしておくと、 'free'と表示され、 'cached'列の下に現在の状態がわかります。その数(それはkBです)を取り、それを10で割ることを検討してください(すなわち、他のプログラムではキャッシュの必要性のために20%を許容し、次にページで得るために8で割る)。専用のデータベースサーバーを使用していない場合は、他のプログラムによる使用を考慮してその値を減らす必要があります。
良い効果をもたらす可能性がある他のいくつかの有用なパラメータ、および4G RAMを搭載したマシンで私が通常それらに設定する値は、次のとおりです。
work_mem = 10240
これは、ディスク上のソートなどの代わりに使用する10MのRAMです。これは大幅な速度の向上をもたらしますが、1接続あたりで200接続×10Mが2Gなので、理論的には大量のRAMを消費する可能性があります。
maintenance_work_mem = 163840
これは160MのRAMで、VACUUM、インデックスの再構築、クラスタなどで使用されます。これは定期的に使われるべきであり、それらのプロセスが終了したときに解放されるべきです。
wal_buffers = 64
これらのバッファは先読みログに使用され、PostgreSQLメーリングリストでこのレベルの改善からの改善の報告が数多くあります。
これは今少し古くなっています(バージョン8.0)が、まだ読む価値があります: http : //www.powerpostgresql.com/Docs
そしてここでもたくさんの良いものがあります: http : //www.varlena.com/GeneralBits/Tidbits/index.php
Andrew McMillanによるPostgreSQLのチューニングフォーラムフォーラムスレッドへの投稿に基づいています。
- mdl_logを複数のテーブルに分割し、それらを1つのテーブルとして読み取るためにUNIONを指定してVIEWを使用します。 (MoodleフォーラムのTim Huntの説明をご覧ください)
他のデータベースパフォーマンスリンク
- memcachedのような分散キャッシュシステムの使用を検討してください。ただし、memcachedにはセキュリティ機能がないため、ファイアウォールの内側で使用する必要があります。
- PostgreSQLの使用を検討してください。 PostgreSQLに好意的な議論と、 MySQLからPostgreSQLへの移行方法 (フォーラムディスカッション)を参照してください。
- MySQLパラメータのチューニングに関する一般的なアドバイス (MySQLのマニュアルからのアドバイス)
- InnoDBのパフォーマンス最適化はMySQLのパフォーマンスブログサイトから取得しました。
異なるMoodleモジュールの性能
Moodleの活動モジュール、フィルタ、その他のプラグインは有効化/無効化することができます。必要でなければ、必要でなければいくつかの機能(チャットなど)を無効にしたいかもしれません - しかしこれは必要ではありません。特定のモジュールのパフォーマンスに関するいくつかの注意事項
- Chatモジュールはメインサーバーへの頻繁なHTTPリクエストの点では独占だと言われています。これは、 ストリームアップデートを使用するようにモジュールを設定するか、UnixベースのWebサーバを使用している場合は、デーモンモードでチャットを実行することで軽減できます。チャットモジュールを使用するときは、設定された設定を使用して予想される負荷に合わせます。 chat_old_pingおよびchat_refreshパラメータは、サーバーの負荷に最も大きな影響を与える可能性があるため、特に注意してください 。
- Moodle Cronタスクはスクリプトcron.phpを呼び出すことによって起動されます 。これがHTTP経由で呼び出されると(例えばwgetやcurlを使用)、大規模なインストールでは大量のメモリを消費する可能性があります。 phpコマンドを直接起動してそれを呼び出すと(例えばphp -f /path/to/moodle/directory/admin/cli/cron.php )、効率が大幅に向上します。
- 膨大な数のレコードがある場合、[ 最近の活動]ブロックは多すぎるリソースを消費しています
mdl_log
。これはSQLクエリを最適化するためにテストされています。 - 小テストモジュールはデータベースのパフォーマンスを向上させることが知られています。しかし、それは最近のバージョンで良くなってきており、そして我々は良い、最新のパフォーマンス測定値を知りません。 (これは2007年の300人の小テストユーザーによるケーススタディです)。 このフォーラムのスレッドには、 Al Rachels氏による次のような提案が記載されています 。
- Moodleとオペレーティングシステムの両方がソリッドステートドライブにインストールされていることを確認してください
- PHP 7にアップグレードして使用する
- MySQLTunerを実行し、その推奨事項を実装する
パフォーマンス関連のMoodle設定に関する詳細は、 パフォーマンス設定を参照してください。
関連情報
- Moodleを使用する: ハードウェアとパフォーマンスのフォーラム
- あなたのMoodleサイトが遅い理由: Jonathan Mooreからの5つのSimple Settingsブログ投稿
- 私はMoodleの性能テストで教えています: http ://www.iteachwithmoodle.com/2012/11/17/moodle-2-4-beta-performance-test-comparison-with-moodle-2-3/
- Moodle 2.4.5対2.5.2パフォーマンスおよびMUC APC cahe store
- Moodleパフォーマンステスト2.4.6対2.5.2対2.6dev
- Moodleのパフォーマンス分析が再検討されました(現在MariaDBで)
- パフォーマンステストに関するTim Huntのブログ(2013年5月2日)Moodle
- New Relic、アプリケーションパフォーマンスモニタリング
- ApacheとPHPのパフォーマンス向上(Apache Event MPMとPHP-FPM)
パフォーマンスに関してmoodle.orgで多くの議論がありました、ここにいくつかのよりおもしろくて(潜在的に)有用なものがあります: