WindowsにAPCをインストールする

提供:MoodleDocs
移動先:案内検索

はじめに

注意: APCの代わりに標準のOPcache拡張機能を使用することを強くお勧めします。

APC (Alternative PHP Cache) は、PHP のオペコードキャッシュです。PHPのページをRAMに保存し、ハードディスクの活動を削減します。これはMoodleのパフォーマンスに真の違いをもたらします。あなたは、システム容量の50%増加を達成することができ、CPUのビジー状態は50%減少するはずです。

このガイドは、Windows サーバに APC をインストールするためのものです。この手順は、Windows 2003 サーバでテストされていますが、Windows XP をテストサーバとして使用する場合にも適用できます。

Windowsサーバへのインストール

警告: APC と Zend Optimiser を同じサーバにインストールすることはできません。どちらか一方を選択する必要があります。

以下の手順でAPCをインストールします。

正しいバージョンをダウンロードする

インストールしたPHPのバージョンに対応したWindowsバイナリを、http://downloads.php.net/pierre/ からダウンロードします。PHP extensionsフォルダ(デフォルトでは c:\php\ext)に保存します。

PHP APC 3.1.13 Beta は Gabriel Dragffy によって Windows 版 PHP 5.4.x に対してコンパイルされています: http://dragffy.com/blog/posts/php-apc-windows

注意: 上記の場所にあなたのバージョンの PHP のバイナリが見つからない場合は、 http://dev.freshsite.pl/php-accelerators/apc.html を試してみてください。

注意: 使用する PHP のバージョン (ブランチ) に応じて適切な拡張モジュールを選択するようにしましょう。

PHP.INI ファイルで APC 拡張機能を有効にする

php.ini ファイルを編集し、extensions セクションに以下の行を追加します:

extension = php_apc.dll

あなたのウェブサーバを再起動し、Moodle管理画面のphpinfoの出力、またはこの行を含むテキストファイルの出力を見て、これがうまくいったかどうか確認してください:

<?php phpinfo(); ?>

使用可能なメモリを確認する

APCが使用可能なメモリー量を確認します。

  • WordPadを起動し、apcmeminfo.phpという名前のテキストファイルを作成します。
  • 以下の行をコピーして、ファイルに貼り付けます。
<?php print_r(apc_sma_info()); ?>
... [avail_mem] => 31447368 ... 

キャッシュが使用するメモリの総量は、この式で与えられます。

total_memory = apc.shm_segments * apc.shm_size

この例では、使用可能なメモリは約32Mbです。通常、32MBを超えるキャッシュが必要な場合は、APCが使用するセグメント数を増やします。しかし、これはウェブサーバの障害を引き起こす可能性があるため、代わりにセグメントサイズを大きくするのが最善です。

キャッシュに利用可能な合計メモリを設定する場合、単一のMoodleインストールで動作可能な最小値 (64Mb) から開始してください。あなたが追加のモジュールおよびブロックをインストールした場合、この量は十分ではないかもしれません。あなたのサーバが稼動する最初の2週間は、定期的にキャッシュを監視して確認してください。以下のモニタリングセクションを参照し、キャッシュの回転がなくなるまで、徐々にキャッシュメモリの合計を増やしてください。

MoodleのAPC設定のカスタマイズ

APCの初期設定は以下の通りです:

apc.cache_by_default = On
apc.enable_cli = Off
apc.enabled = On
apc.file_update_protection = 2
apc.filters = 
apc.gc_ttl = 3600
apc.include_once_override = Off
apc.max_file_size = 1M
apc.num_files_hint = 1000
apc.optimization = Off
apc.report_autofilter = Off
apc.shm_segments = 1
apc.shm_size = 30
apc.slam_defense = 0
apc.stat = On
apc.ttl = 0
apc.user_entries_hint = 100
apc.user_ttl = 0
apc.write_lock = On

これらの設定の詳細については、http://www.php.net/apc を参照してください。

一般的なMoodleのインストールには、いくつかの変更が必要です。これらは:

  • apc.shm_size (キャッシュサイズ) は、初期値として 64Mb に設定します。
  • apc.shm_segments(キャッシュサイズ)を1に設定します。
  • apc.stat (file stating) は1に設定する必要があり、そうしないと空白ページができる可能性があります。
  • apc.max_file_sizeの設定を10MBに増加させる必要があります。

なお、APCを無効にするには、PHP.INIで apc.enabled = 0 を一時的に設定し、Webサーバを再起動する必要があります。

PHP.INIのAPCセクションを以下に示しますので、以下をコピーしてPHP.INIファイルの最後に貼り付けてください:

[APC]
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.max_file_size = 10M
apc.stat=1

その他の設定は、デフォルトのままでかまいません。

テンポラリディレクトリの設定

APCは、ファイルを保存するための一時ディレクトリが必要です。Windowsの一時ディレクトリにファイルを保存しようとするので、 C:\WINDOWSTEMPディレクトリをWebサーバユーザ(IISでは IUSR_machine-name、Apacheではパーミッションの変更は不要)が書き込み可能に設定します(最低でも読み取りと実行のパーミッションを設定します)。

キャッシュの監視とチューニング

APCのソースには、キャッシュのパフォーマンスを監視し、チューニングするのに便利なphpスクリプトが含まれています。

  • http://pecl.php.net/package/apc から APC モニタリングファイルをダウンロードし、中身を解凍してください。
  • APCモニタリングの情報を表示するファイルであるapc.phpを探します。
  • apc.phpファイルをあなたのサーバの /moodle/admin フォルダに保存してください。

注意: APCのインストールに成功したら、セキュリティのためにこのファイルをパスワードで保護された場所に移動してください。

キャッシュを調整するには、一般的なキャッシュ情報詳細なメモリ使用量とフラグメンテーション セクションを参照してください。キャッシュフルカウントフラグメンテーション% のインジケータに注目してください。

  • Cache Full Count > 0の場合、十分なメモリが割り当てられていないため、キャッシュが一杯になり、チャーンが発生していることを示しています。この問題を解決するには、メモリの割り当てを増やします(apc.shm_size)。
  • フラグメンテーション%インジケータは0%であるべきですが、特にキャッシュの回転が速い場合、時々増加することがあります。

APC.phpのセキュリティ

Moodleセキュリティを使用するために、APCモニタリングスクリプトを設定することができます。 以下のコードを含む新しいファイルapc.conf.phpを管理ディレクトリに作成してください。このファイルはapc.phpによって自動的に読み込まれます。

<?php // Moodleのユーザ認証 require_once("../config.php"); require_once($CFG->libdir.'/adminlib.php'); require_login(); require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM, SITEID));

// APC Authの無効化 defaults('USE_AUTHENTICATION',0);

?>

パフォーマンスの確認

パフォーマンスの向上を確認するため、以下をお試しください:

  • PHP.INIのキャッシュを無効にして、Webサーバを再起動します。
  • コマンドプロンプトで以下のように ab.exe (apache bin フォルダに含まれる) を実行します:
c:\apache2\bin>ab.exe -n 50 -c 1 -d http://mymoodle.com/moodle/index.php
  • 転送速度とリクエストごとの時間の値に注意してください。
  • PHP.INIでキャッシュを有効にし、Webサーバを再起動します。
  • キャッシュに保存されるように、ブラウザで http://mymoodle.com/moodle/index.php を読み込みます。
  • ab.exeを再度実行し、転送速度とリクエストごとの時間の値を比較します。これらの値の両方が約50%増加していることが確認できるはずです。

APCのアンインストール

APCをアンインストールするには、PHP.INIの拡張行に以下のようにセミコロンを追加してください:

;extension = php_apc.dll

Webサーバを再起動することを忘れないでください。

See also