WindowsにAPCをインストールする
はじめに
注意: 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()); ?>
- ファイルを moodle/admin/apcmeminfo.php に保存してください。
- http://mymoodle.com/moodle/admin/apcmeminfo.php を参照してください。
- avail_mem の値 (バイト) に注意してください。
... [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のインストールに成功したら、セキュリティのためにこのファイルをパスワードで保護された場所に移動してください。
- スクリプトが動作しているかどうかは、http://mymoodle.com/moodle/admin/apc.php(または、サーバ上の apc.php ファイルの場所がどこであれ)をブラウズすることで確認します。左側にキャッシュのグラフィック表示と統計データが表示されるはずです。
キャッシュを調整するには、一般的なキャッシュ情報 と 詳細なメモリ使用量とフラグメンテーション セクションを参照してください。キャッシュフルカウント と フラグメンテーション% のインジケータに注目してください。
- 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サーバを再起動することを忘れないでください。