パフォーマンスの推奨

提供:MoodleDocs
2021年2月9日 (火) 02:44時点におけるToshihiro KITA (トーク | 投稿記録)による版 (→‎スケーラビリティ)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

Moodleは、使用レベルが小さい場合や、数千人のユーザにスケールアップする場合でも、非常に優れたパフォーマンスを発揮するように作成できます。パフォーマンスに関係する要素は、基本的にPHPベースのデータベース駆動型システムの場合と同じです。サーバを最適化しようとするときは、ユーザに最も大きな違いをもたらす要因に焦点を当てるようにしてください。たとえば、データベースにアクセスするよりも比較的多くのユーザが閲覧している場合は、Webサーバのパフォーマンスを向上させることを検討してください。


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

最適化を試みる前に、改善しようとしているシステムのコンポーネントのベースラインベンチマークを取得する必要があります。 Linuxの場合は[1]を試してください。Windowsの場合はパフォーマンスモニターを使用してください。システムの現在のパフォーマンスに関する定量的なデータが得られたら、行った変更が実際に影響を及ぼしたかどうかを判断できます。

パフォーマンスを向上させるための調整の全体的な目的は、RAM(キャッシュ)を使用し、ディスクベースの活動を減らすことです。スワップファイルの使用をできるだけ排除するようにすることが特に重要です。システムがスワッピングを開始した場合、これはより多くのRAMが必要であることを示しています。

最適化順序の設定 は通常、プライマリストレージ(より多くのRAM)、セカンダリストレージ(より高速なハードディスク/改善されたハードディスク構成)、プロセッサ(より多くのより高速)です。

特にMoodleに影響を与えるシステムのボトルネックを見つけるために、ベンチマークプラグインをインストールして使用することは興味深いかもしれません。

スケーラビリティ

Moodleの設計(アプリケーション層の明確な分離)により、非常にスケーラブルなセットアップが可能になります。 (Moodleの大規模インストールのリストを確認してください。)

大規模なサイトは通常、Webサーバとデータベースを別々のサーバに分離しますが、小規模なインストールの場合、これは通常必要ありません。

たとえば、複数のWebサーバを使用することにより、Moodleインストールの負荷を分散することができます。別々のウェブサーバは同じデータベースにクエリを実行し、同じファイルストアとキャッシュ領域を参照する必要があります(キャッシングを参照)が、そうでない場合、アプリケーション層の分離はこの種のクラスタリングを実行可能にするのに十分です。同様に、データベースはサーバのクラスター(MySQLクラスターなど)である可能性がありますが、これは簡単な作業ではないため、Moodleパートナーなどの専門家のサポートを求める必要があります。

非常に大規模で負荷分散されたシステムでは、共有コンポーネントのパフォーマンスが重要になります。共有ファイル領域が適切に調整され、効果的なキャッシュを使用することが重要です(Redisを強くお勧めします)。システム管理のこれらの領域を十分に理解することは、最小要件と見なす必要があります。

サーバクラスター

Moodleフォーラムディスカッションの使用:

ハードウェア構成

:パフォーマンスを向上させるために行うことができる最も速くて最も効果的な変更は、 WebサーバRAMの量を増やすことです -できるだけ多く(たとえば、4GB以上)取得します。プライマリメモリを増やすと、プロセスをディスクにスワップする必要性が減り、サーバがより多くのユーザを処理できるようになります。

  • 可能な限り最高の プロセッサ機能 、つまりデュアルコアまたはデュアルコアプロセッサを取得することで、パフォーマンスが向上します。最新のBIOSではハイパースレッディングを有効にできるはずですが、CPUベンチマークツールを使用して、これがプロセッサの全体的なパフォーマンスに影響を与えるかどうかを確認してください。
  • 余裕がある場合は、SATAドライブの代わりに SCSIハードディスク使用してください。 SATAドライブはシステムのCPU使用率を向上させますが、SCSIドライブには独自の統合プロセッサがあり、複数のドライブがある場合は独自のプロセッサになります。 SATAドライブが必要な場合は、マザーボードとドライブ自体がNCQ(ネイティブコマンドキューイング)をサポートしていることを確認してください。
  • シーク時間が短い ハードディスクを購入します。 これにより、特にMoodleのレポートにアクセスする際に、システムの全体的な速度が向上します。
  • スワップファイル サイズを正しく設定してください。一般的なアドバイスは、4x物理RAMに設定することです。
  • RAIDディスクシステム を使用します。 作成できるRAID構成は多数ありますが、通常は次の方法が最適です。
    • ハードウェアRAIDコントローラーをインストールします(可能な場合)
    • RAID-1として構成された1セットのディスク上のオペレーティングシステムとスワップドライブ。
    • RAID-5として構成された別のディスクセット上のMoodle、Webサーバおよびデータベースサーバ。
  • 'moodledata' 領域が比較的遅いストレージ(NASデバイスへのNFSマウントなど)にある場合、デフォルトのキャッシュ構成(このストレージに書き込む)でパフォーマンスの問題が発生します。 キャッシングのページを参照して、別の方法を選択してください。 Redisをお勧めします。 GlusterFS / OCFS2 / GFS2を使用する SANデバイスおよびファイバーチャネルでパフォーマンスが向上する可能性があります(Moodle [https ://moodle.org/mod/forum/discuss.php?d=214680#p1123124 フォーラムスレッド]、NFSパフォーマンスチューイング
  • レイテンシとスループットを向上させるには、 ギガビットイーサネット を使用します。これは、Webサーバとデータベースサーバを異なるホストに分離している場合に特に重要です。
  • ネットワークカード の設定を確認してください。バッファと送信/受信記述子の使用を増やし(これをプロセッサとメモリのオーバーヘッドとバランスをとる)、OSではなくカードにTCPチェックサム計算をオフロードすることで、パフォーマンスを向上させることができます。
  • 300人のユーザを対象としたサーバストレステストに関するこのケーススタディをお読みください。
  • ネットワークトラフィックとサーバ負荷については、こちらの付随レポートをご覧ください。
  • 教育でのこのSFSUプレゼンテーションも参照してください(VMWareを使用): [2]

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

  • サーバ オペレーティングシステム は、Linux(推奨)、Unixベース、WindowsまたはMac OSXを使用できます。 * nixオペレーティングシステムは通常、サーバがシェルインターフェイスのみで構成されているのと同じタスクを実行するために、Mac OSXまたはWindowsサーバよりも少ないメモリを必要とします。さらに、Linuxにはライセンス料はかかりませんが、別のオペレーティングシステムに慣れている場合は、学習曲線が大きくなる可能性があります。 SMPを実行しているプロセッサが多数ある場合は、[3]などの高度に調整されたOSの使用を検討することもできます。
  • 最適化の手順については、独自のOSと ベンダー固有の手順 を確認してください。
    • Linuxについては、Linux PerformanceTeamサイトを参照してください。
    • Linuxの場合は、hdparmコマンドを調べます。たとえば、hdparm-m16-d1を使用して、複数のセクターとDMAで読み取り/書き込みを有効にすることができます。 "async" および "noatime"オプションを使用してディスクをマウントします。
    • Windowsの場合、サーバをネットワークアプリケーション(コントロールパネル、ネットワーク接続、LAN接続、プロパティ、Microsoftネットワークのファイルとプリンターの共有、プロパティ、最適化)用に最適化するように設定します。 MicrosoftTechNetサイトで最適化ドキュメントを検索することもできます。

Webサーバのパフォーマンス

Firefoxfirebug拡張機能をインストールすると、時間を監視できます各ページコンポーネントの読み込みに時間がかかります。また、Yslow拡張機能は、Yahooの14のルールに対してページを評価します。 全文Webサイトを高速化するためのベストプラクティス、 ((ビデオ))高速読み込みWebサイト用。

PHPのパフォーマンス

  • PHPには組み込みのアクセラレータが含まれています。有効になっていることを確認してください。
  • キャッシュされたPHPページをTMPFSファイルシステムに配置することで、読み取り/書き込みパフォーマンスの向上を向上させることができます。ただし、電源障害が発生したり、サーバを再起動したりすると、キャッシュの内容が失われることに注意してください。
  • PHPのパフォーマンスは、(CGIではなく) Apache / IIS6ISAPIモジュール としてインストールした方が優れています。 IIS 7.0 / 7.5(Windows Server 2008 / R2)ユーザは、最高のパフォーマンスを得るためにFastCGIインストールを選択する必要があります。
  • php.iniの memory_limit も確認してください。 memory_limitディレクティブのデフォルト値は128Mです。一部のサイトでは、特に一部のバックアップ操作では、より大きくする必要がある場合があります。
  • MoodleバージョンによるPHP設定も参照してください
  • PHP-FPM(apacheを使用)を使用します。

インストールのハウツー

APC

eAccelerator

MemCached

Memcachedサーバ(デーモン)

Memcached PHP7.1拡張機能

  • [4]はIUSCentOS7.xリポジトリから。

Apacheのパフォーマンス

  • WindowsサーバでApacheを使用している場合は、パフォーマンスと安定性の改善があると報告されているApacheLoungeのビルドを使用してください。公式のApacheダウンロードと比較。これは非公式のビルドであるため、公式リリースに追いついていない可能性があることに注意してください。
  • MaxRequestWorkers ディレクティブを正しく設定します(Apache2.4より前の MaxClients )。この式を使用してください(使用可能なメモリの80%を使用して、予備のスペースを残します)。
MaxRequestWorkers = Total available memory * 80% / Max memory usage of apache process
apacheプロセスのメモリ使用量は通常10MBですが、Moodleはプロセスごとに最大100MBを簡単に使用できるため、一般的な経験則では、使用可能なメモリをメガバイト単位で100で割って、MaxClientsの控えめな設定を取得します。 MoodleサーバでMaxRequestWorkersをデフォルトの150から下げることに気付く可能性が非常に高いです。より正確な見積もりを取得するには、シェルコマンドから値を読み取ります。
#ps -ylC httpd --sort:rss
MaxRequestWorkers の値を256を超えて増やす必要がある場合は、 ServerLimit ディレクティブも設定する必要があります。
警告:サーバが使用可能なメモリよりも多くのRAMを消費し、ディスクへのスワップを開始するため、使用可能なメモリよりも高いMaxRequestWorkersの値を設定しようとしないでください。
  • Apacheがhttpd.confファイルにロードする モジュールの数 を、必要なメモリを減らすために必要な最小数に減らすことを検討してください。
  • 最新バージョンのApache を使用する-Apache2のメモリモデルは改善されており、メモリ使用量がさらに削減されます。
  • Unix / Linuxシステムの場合、httpd.confの MaxConnectionsPerChildMaxRequestsPerChild)を20〜30まで下げることを検討してください(フォークのオーバーヘッドを低く設定した場合、メリットを上回り始めます)。
  • 負荷の高いサーバの場合は、 KeepAlive Off を設定するか(Moodleページにリソースまたはアップロードされた画像へのリンクが含まれていない場合にのみこれを行う)、または KeepAliveTimeout を2〜5に下げることを検討してください。 。デフォルトは15(秒)です。値が大きいほど、アイドル状態の可能性のある接続を待機するサーバプロセスが多くなります。 KeepAliveTimeoutのより正確な値は、ユーザがページをダウンロードするのにかかる時間を観察することで得られます。KeepAlive変数のいずれかを変更した後、より多くのワーカープロセス/スレッドを開始する際に追加のオーバーヘッドが発生する可能性があるため、CPU使用率を監視します。
  • KeepAlive Offを使用する代わりに、Moodleサーバ前に リバースプロキシサーバ を設定して、画像付きのHTMLファイルをキャッシュすることを検討してください。その後、ApacheをMoodleサーバでのキープアライブの使用に戻すことができます。
  • .htaccessファイルを使用しない場合は、 AllowOverride 変数をAllowOverrideNoneに設定して、.htaccessルックアップを防止します。
  • コンテンツネゴシエーションを回避するために、DirectoryIndex を正しく設定してください。実稼働サーバの例を次に示します。
DirectoryIndex index.php index.html index.htm
  • サーバで開発作業を行っている場合を除き、ExtendedStatus Off、mod_infoとmod_statusを無効にします。
  • DNSの待ち時間を短縮するために、HostnameLookups Off(デフォルト)のままにします。
  • タイムアウトの値を30〜60(秒)に減らすことを検討してください。
  • オプションディレクティブ の場合、ディレクトリスキャンを実行するため、ディスクI/Oをさらに削減するには、オプションマルチビューは避けてください。
Options -Indexes FollowSymLinks
  • 圧縮は、HTTP応答のサイズを縮小することにより、応答時間を短縮します
  1. mod_deflateをインストールして有効にします-ドキュメントまたはマニュアルページを参照してください
  2. このコードを仮想サーバ構成ファイルに追加しますルートディレクトリのセクション(または、AllowOverridesがオンの場合は.htaccessファイル内):

<ifModule mod_deflate.c>

  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/x-js text/javascript text/css application/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のパフォーマンス

lighttpdnginxまたは[http:// www.cherokee-project.com/ cherokee]FastCGIモードのPHPとの組み合わせなどの 軽量 なWebサーバーを使用すると、サーバのパフォーマンスを向上させることができます。Lighttpdは元々、C10k問題に対処するための概念の証明[5]として作成されましたが、主にメモリに推奨されています-限られたサーバ、その設計の起源、および非同期IOモデルにより、適切で実績のある[6] Moodleを含む高負荷のWebサイトおよびWebアプリ用の代替HTTPサーバ。追加情報、構成例、およびリンクについては、MoodleDocs Lighttpdページを参照してください。

または、lighttpdnginxの両方が、バックエンドの負荷を軽減するためのロードバランサーやリバースプロキシとして機能します。サーバ[7]、既存のサーバで実際のソフトウェア変更を必要とせずにメリットを提供します。

特にWebサービスやMoodleネットワーキングなどの高度な機能を使用している場合、これらはすべての中で最もテストされていないサーバ環境である可能性が高いことに注意してください。それらは、比較的単純な構成で頻繁に使用されるMoodleサイトにおそらく最もよく考慮されます。

X-Sendfile

X-Sendfileモジュールは、Moodleから大きなファイルを送信する際のパフォーマンスを向上させます。可能な場合は、この機能を使用するようにWebサーバとMoodleを構成することをお勧めします。

Webサーバを構成します。

config.phpでサポートを有効にします(config-dist.phpを参照)。 // $CFG->xsendfile = 'X-Sendfile'; // Apache {@see https://tn123.org/mod_xsendfile/} // $CFG->xsendfile = 'X-LIGHTTPD-send-file'; // Lighttpd {@see http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file} // $CFG->xsendfile = 'X-Accel-Redirect'; // Nginx {@see http://wiki.nginx.org/XSendfile}

サーバの実装で必要な場合は、ファイルの場所のプレフィックスを構成します。 // $CFG->xsendfilealiases = array( // '/dataroot/' => $CFG->dataroot, // '/cachedir/' => '/var/www/moodle/cache', // for custom $CFG->cachedir locations // '/localcachedir/' => '/var/local/cache', // for custom $CFG->localcachedir locations // '/tempdir/' => '/var/www/moodle/temp', // for custom $CFG->tempdir locations // '/filedir' => '/var/www/moodle/filedir', // for custom $CFG->filedir locations // );

cronのパフォーマンス

多くの非同期プロセスがcronにオフロードされるため、cronはmoodleの全体的なパフォーマンスの非常に重要な部分です。したがって、フロントエンドから与えられた作業を処理するために実行され、十分なスループットが必要です。

UnixまたはLinuxを使用するCron#高性能cronタスクを参照してください

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

MySQLのパフォーマンス

MySQLのパフォーマンスを向上させるためにできる 一番のこと は、Innodb BufferPoolの記事の推奨事項を読み、理解し、実装することです。

バッファプールサイズは、サーバに十分な容量がある限り、サーバの実行中に安全に変更できます。設定した値に対応するためのメモリ(RAM)。 MySQL専用のマシンでは、この値を使用可能なメモリの80%に安全に設定できます。

innodb_buffer_pool_instancesを、使用可能なコア、vCPU、またはチップの数に設定することを検討してください。 MySQLドキュメントの推奨事項に従ってこの値を調整します。

以下は、my.cnf(Windowsではmy.ini)のパフォーマンスを向上させるために調整できるMySQL固有の設定です。このファイルには、設定とその値のリストが含まれています。現在の値を確認するには、これらのコマンドを使用します

SHOW STATUS;
SHOW VARIABLES;

重要 :MySQLサーバ構成を変更する前に、データベースのバックアップを作成する必要があります。 my.cnfに変更を加えた後、mysqldを再起動します。

可能であれば、MySQLTunerツールをMySQLサーバに対して実行し、現在の負荷、ステータス、および変数に基づいて、以下の設定のほとんどに適切な構成値を自動的に計算します。

  • クエリキャッシュ を有効にする
query_cache_type = 1.

ほとんどのMoodleインストールでは、以下を設定します:

query_cache_size = 36M
query_cache_min_res_unit = 2K.

データベースで更新をほとんど行わない場合、クエリキャッシュによってパフォーマンスが向上します。

  • テーブルキャッシュ を正しく設定します。 Moodle1.6セット用
table_cache = 256 #(table_open_cache in MySQL > 5.1.2)

(分)、およびMoodle1.7セットの場合

table_cache = 512 #(table_open_cache in MySQL > 5.1.2)

(分)。テーブルキャッシュはすべてのスレッド(接続)で使用されるため、opened_tablesの値を監視してさらに調整します-opened_tables> 3 * table_cache(MySQLのtable_open_cache> 5.1.2)の場合は、OSの制限までtable_cacheを増やします。また、table_cacheの数値は、インストールしたモジュールとプラグインの数によっても変わることに注意してください。以下のmysqlステートメントを実行して、サーバの番号を見つけます。返された数値を確認し、table_cacheをこの値に設定します。

mysql>SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema='yourmoodledbname';
  • スレッドキャッシュ を正しく設定してください。次の式で、スレッドキャッシュの使用率が可能な限り100%に近くなるように値を調整します。
thread cache utilization (%) = (threads_created / connections) * 100
  • キーバッファ は、MoodleのSELECTクエリへのアクセス速度を向上させることができます。正しいサイズはインデックスファイル(.myi)のサイズに依存し、Moodle 1.6以降(追加のモジュールとプラグインなし)では、この値の推奨値はkey_buffer_size = 32Mです。理想的には、データベースが100リクエストごとにディスクから1回読み取るようにし、次の式が真になるようにkey_buffer_sizeの値を調整して、値がインストールに適していることを監視します。
key_read / key_read_requests < 0.01
key_write / key_write_requests <= 1.0
  • 接続の最大数 を設定して、ユーザーに 接続が多すぎます というメッセージが表示されないようにします。 これは、使用される合計メモリに影響を与える可能性があることに注意してください。 MySQL接続は通常ミリ秒の間続くため、負荷の高いサーバーでもこの値が200を超えることはまれです。
  • 高バースト活動 を管理します。 Moodleインストールで多くのクイズが使用され、パフォーマンスの問題が発生している場合(threads_connectedの値を監視して確認してください-上昇してはいけません)、back_logの値を増やすことを検討してください。
  • 毎週、Moodleをアップグレードした後にテーブルを最適化する 。大規模なデータ削除の演習を行った後、たとえば学期や学年の終わりに、テーブルを最適化することもお勧めします。これにより、インデックスファイルが最新の状態になります。最初にデータベースをバックアップしてから、以下を使用します。
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マニュアルおよびこのmod / forum / discuss.php?d=58208#p279638 フォーラムスクリプト)。
  • キーの配布を維持する 。毎月かそこらで、mysqlサーバを停止してこれらのmyisamchkコマンドを実行することをお勧めします。
#myisamchk -a -S /pathtomysql/data/moodledir/*.MYI
警告:myisamchkコマンドを実行する前に、mysqlデータベースプロセス(mysqld)を停止する必要があります。そうしないと、データが失われるリスクがあります。
  • ディスクに保存される一時テーブル の数を減らします 。これをcreated_tmp_disk_tables値で確認してください。これが比較的大きい(> 5%)場合は、減少が見られるまでtmp_table_sizeを増やします。これはRAMの使用量に影響を与えることに注意してください。

PostgreSQLのパフォーマンス

PostgreSQLのチューニングに関する優れた論文がいくつかあり(こちらなど)、Moodleの場合は一般的な場合と変わらないようです。

最初に認識すべきことは、チューニングについて本当に心配する必要がある場合は、データベースサーバ用に別のマシンを使用する必要があるということです。別のマシンを使用していない場合、パフォーマンスに関する多くの質問への回答は、アプリケーションの他の部分のメモリ要件によって大幅に混乱します。

自分が何をしているのかわからない限り、おそらく 自動バキュームを有効にする 必要があります。 多くのeラーニングサイトでは、使用率が低い期間が予測できるため、自動バキュームを無効にして、そのときに特定のバキュームを実行することをお勧めします。 または、自動バキュームを実行したままにして、静かな期間に毎週完全バキュームを実行します。

shared_buffers を適切な値に設定します。 8.1までのバージョンの場合、私のテストでは、ほとんどの場合、バッファが10000未満の場合にピークパフォーマンスが得られることが示されています。したがって、そのようなバージョンを使用していて、RAMが512Mを超える場合は、shared_buffersを10,000(8MB)に設定するだけです。

バッファ管理は8.2で大幅に見直され、合理的 は今でははるかに多くなっています。私は8.2でパフォーマンステストを実施していませんが、他の人からの推奨事項は、共有バッファをメモリでさらにスケーリングする必要があり、100,000(80MB)のような値まで利益を享受し続ける可能性があるというものです。システムRAMの1〜2%を使用することを検討してください。

PostgreSQLは、オペレーティングシステムがファイルをキャッシュしていることも想定しているため、effective_cache_size を適切な値に設定することもお勧めします。妥当な値は通常(合計RAM-プログラムで使用されているRAM)です。 Linuxを実行していて、システムを1〜2日実行したままにしている場合は、'フリー' を確認できます。'キャッシュ' 列の下に、現在の状態が表示されます。その数(kB)を10で割ることを検討してください(つまり、他のプログラムのキャッシュニーズに20%を許可し、次に8で割ってページを取得します)。専用のデータベースサーバを使用していない場合は、他のプログラムによる使用を考慮して、その値を減らす必要があります。

プラスの効果をもたらす可能性のあるその他の便利なパラメーターと、4GRAMを搭載したマシンで通常設定する値は次のとおりです。

work_mem = 10240

これは、ディスク上の並べ替えなどの代わりに使用する10MのRAMです。これにより速度が大幅に向上しますが、接続ごとに200接続* 10Mは2Gであるため、理論的には大量のRAMを消費する可能性があります。

maintenance_work_mem = 163840

これは、(たとえば)VACUUM、インデックスの再構築、クラスターなどで使用される160MのRAMです。これは定期的にのみ使用する必要があり、これらのプロセスが終了したときに解放する必要があるため、しばらくの間は十分な価値があると思います。

wal_buffers = 64

これらのバッファは先行書き込みログに使用され、PostgreSQLメーリングリストにはこのレベルの増加からの改善に関する多くの報告があります。

これは現在(バージョン8.0)少し古くなっていますが、それでも読む価値があります: http://www.powerpostgresql.com/Docs

そして、ここにもたくさんの良いものがあります: http://www.varlena.com/GeneralBits/Tidbits/index.php

TuningPostgreSQLフォーラムスレッドでのAndrewMcMillanの投稿に基づいています。

  • mdl_log を複数のテーブルに分割し、UNIONでVIEWを使用してそれらを1つとして読み取ります。 (MoodleフォーラムのTim Hunt [8]を参照してください)

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

異なるMoodleモジュールのパフォーマンス

Moodleの活動モジュール、フィルタ、およびその他のプラグインはアクティブ化/非アクティブ化できます。必要に応じて、必要がない場合は一部の機能(チャットなど)を無効にすることもできますが、これは必須ではありません。特定のモジュールのパフォーマンスに関する注意事項:

  • チャット モジュールはと言われていますメインサーバへの頻繁な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人のクイズユーザによるケーススタディです。)以下の提案は、[9]AlRachelsによって説明されました。:
    • Moodleとオペレーティングシステムの両方がソリッドステートドライブにインストールされていることを確認してください
    • PHP7にアップグレードして使用します
    • MySQLTunerを実行し、その推奨事項を実装します

パフォーマンス関連のMoodle設定の詳細については、パフォーマンスの設定を参照してください。

関連項目

moodle.orgでパフォーマンスについて多くの議論がありましたが、ここにいくつかのより興味深く(潜在的に)有用なものがあります: