OPcache導入してみた!(速さ検証もあるよ!)

  • 12
    いいね
  • 0
    コメント

OPcacheとは

OPcacheとは、コードをコンパイルして共有メモリへ保存しておく仕組みのことです。
リクエストごとにスクリプトを読んでからいちいち処理する手間が省けるのでパフォーマンスの向上が期待されます。

インストール

私は今回Windowsのphp 7.0で設定を行っています。
xdebugは導入しておりません。

準備

特になし

設定

php.iniで以下の設定を記述します。

php.ini
zend_extension=/[それぞれのPHPのextensionのパス]/php_opcache.dll

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

設定内容はphp.netの推奨設定で推奨される一般的設定です。

オプション デフォルト 意味
opcache.enable 1 キャッシュを有効にする
opcache.enable_cli 0 CLI版のキャッシュを有効にする
opcache.memory_consumption 64 使用される共有メモリのサイズ
opcache.interned_strings_buffer 4 internされた文字列を格納されるために使用されるメモリ量
opcache.max_accelerated_files 2000 スクリプトの最大数最小値は200
opcache.revalidate_freq 2 更新のたびにタイムスタンプをチェックする頻度。 opcache.validate_timestampsがデフォルトで有効なのでチェックされる
opcache.fast_shutdown 0 それぞれに割り当てられたブロックを開放しない高速シャットダウンシーケンスが使用される

変更可能範囲と他のオプションについてはOPcacheの実行時設定を参照してください。

確認

php -v で確認します。

opcache01.png

図のように表示されればOpache導入成功です。

検証

せっかくなので速さ検証してみます。
ちょうどいいところにhello worldだけを返すLaravelフレームワークがありましたので、これで試してみました。
検証したのはabコマンドです。
内容はab -c 100 -n 100です。
100人が同時に1リクエストした場合を想定しています。

導入前

opcache01.png

導入後

opcache01.png

速いいいいいい!どうしていままで導入しなかったんでしょうね。

参考