本家のお世話-#90。(Opcacheを使う)

 先の一昨日,自鯖上で, Opcache を有効化した。

 インストール以来,種々のトラブルをもたらしたBulletProof Security」だが,結構,有用な情報もくれた。例えば,これの System Information のページで見たことから,セキュリティ強化のために, php.ini の以下の値を変更した。

デフォルト カスタム
output_buffering = 4096 output_buffering = Off
expose_php = On expose_php = Off
mysql.allow_persistent = On mysql.allow_persistent = Off

 また,同じページで,「Opcode Cache」というのを見て,そういえば, OPcache が PHP5.5 にバンドル とか書いてあったなと,思い出した。で,やってみたわけ。

 php.ini の変更点は,以下の通り。

 「zend_extension=php_opcache.dll」という行を Windows Extensions の最後に加える。以下の6行はアンコメントし, ここのページの指示 にしたがって値を変更する。のちのち自鯖用にもっといい値を見つけられるかもしれないが,今のところは,指示どおりが無難だろう。

デフォルト カスタム
;opcache.enable=0 opcache.enable=1
;opcache.memory_consumption=64 opcache.memory_consumption=128
;opcache.interned_strings_buffer=4 opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=2000 opcache.max_accelerated_files=4000
;opcache.revalidate_freq=2 opcache.revalidate_freq=60
;opcache.fast_shutdown=0 opcache.fast_shutdown=1

 うちの場合, CLI 版 PHP は使わないので,「;opcache.enable_cli=0」はこのまま。

 ビフォア&アフタで Apache のベンチマークを採ってみた。 ApacheBench
 ベンチマークでも,若干良くなっているように見えるが,自 LAN 内での体感は,もっと良かった。うちのサイトは WordPress で動いてるから, PHP のキャッシュの効果は,多分,大したもんなんだろう。

Details
Details
Files
Files

 APC Control Panel ってのがあるらしいので, Opcache にもあるのかなと思って探してみたら, Opcache Control Panel (実体は ocp.php だけ) というのがあって,ブラウザから Opcache を操作出来て便利。なんだけど, phpinfo 関数を有効にしないと動かないので,アクセス制限はかけておかないといけないよ。

 くりくりさんが,「APC / OPcacheについて」というページを教えてくれた。こういう比較サイトはほかにもいろいろあるから,やってみる前にググって見るといいと思う。

「本家のお世話-#90。(Opcacheを使う)」への8件のフィードバック

  1. おはようございます。
    Time taken for tests: 13.899 seconds
    Requests per second: 71.95 [#/sec] (mean)

    Time taken for tests: 9.844 seconds
    Requests per second: 101.59 [#/sec] (mean)

    効果でてますね。
    centosは/etc/php.d/opcache.iniがありました。

    o6asanさんにopcacheを教えていただかなければ私とtrippyboyさんはphp5.4と5.3のままだったでしょう。
    ありがとうございます。

    1. くりくりさん,こんにちは。

      > ありがとうございます。

      いえ,とんでもないです。どういたしまして。

      ところで,くりくりさんのページにあった,「ZendOpcacheとAPCuではじめるハイパフォーマンスPHP (2014.3.9–リンクを貼り替えた。元記事の日付は,2013.10.15だったのに,内容は同じで2014.02.27になっている。引っ越し後の直し忘れか?)」さんを参考に,APCuをやってみまして,ベンチ採ってみたんですが,効果がよくわからなくて,現時点では停止させています。どこかで,APC本体ではなく,APCuの効果をしっかり確認できる方法を載せてあるところに,心当たりありませんか。

      Windowsでの導入そのものは,しっかりDLLが作られていたので,簡単だったです。APCu単独のインストール情報はあまりなかったので,上記のサイト以外では,Alternative PHP CacheInstalling APC in Windowsを参考にしました。
      うちの場合だと,PECLから,php_apcu-4.0.2-5.5-ts-vc11-x86.zipをダウンロードして展開し,PHPの拡張フォルダに入れて,php.iniに最低限,extension=php_apcu.dllを加えて,Apacheを再起動するだけでした。Windowsの場合は,Opcacheもそうでしたが,すべて,php.iniに追記のようです。初期のapc.shm_sizeは32Mになってました。

      まぁ,APCuはユーザキャッシュを扱うということですから,うちのブログのレベルでは,それほど意味はないかもしれません。Opcacheは参考にしたところほどのアクセスはなくても,自分がLANで使うときでも,体感が違っているので,導入の意味は,十分あった気がします。

  2. こんばんは
    >APCuの効果をしっかり確認できる方法を載せてあるところに,心当たりありませんか。

    探してみましたけど、ありませんねー。
    googleの予測変換というのでしょうか?
    php opとやるとopcacheはでてきますが、apcuはまったく
    ありません。みんな検索しないのでしょう・・・。

    APCuをもうすでにやったんですか!!
    俺も早いですけど、o6asanさんも早いですね。

    1. くりくりさん,こんばんは。

      > 探してみましたけど、ありませんねー。

      なかったですか。探していただいて,ありがとうございました。
      APCuは,入れてみても,すぐに効果は実感できませんでした。ユーザキャッシュということなので,ユーザが多くないと実感できないのかもしれないです。動かしておいて,ときどき,apc.writableの状況を見るという方法も考えたのですが,当面は,停止にしておきます。APCから分かれたばかりのようですから,Opcache+APCuで使う方が増えれば,そのうち情報も手に入りやすくなるでしょう。

      > 俺も早いですけど、o6asanさんも早いですね。

      もともと,早いのが取り柄だったんですけど(爆)。近頃はどうもついていけなくなってきています。ActivePerl-5.18.1.1800へのアップグレードも,26日にやっと済ませたところです。インストール方法に変更もなく,自鯖では,特に不具合も出なかったので,記事は書きませんでしたが。

  3. こんにちは
    今更ながらこっそり会社のサーバーにAPCを導入してみました。

    opcacheはバージョン5.5からなんでバージョンアップをしちゃうと
    php-cgiが使えなくなる可能性があるのでこのままです。

    1. くりくりさん,こんばんは。

      > バージョンアップをしちゃうとphp-cgiが使えなくなる可能性がある

      そんなものなんですか?

      > 今更ながらこっそり会社のサーバーにAPCを導入してみました。

      感触はどうですか。

  4. おはようございます。
    >そんなものなんですか?
    mod_fcgidがepelにあっていれてみたんですが
    remiでphp5.4にしてみましたらいつのまにかうごかなくなってました。原因はちゃんと究明しておりません。
    これもremiにしない原因のひとつです。

    >感触はどうですか。
    あんまりかわらないような(w
    でもよくなることはあっても悪くなることはないと思うので
    いれてみました。

    1. くりくりさん,こんにちは。

      > これもremiにしない原因のひとつです。

      どんどん新しいものを取り入れていくだけに,整合性が後回しになるんでしょうか。もっとも, remi あたりのコンセプトでは,その辺は,利用するユーザの側でやってくれということなのかもしれないですね。

      > あんまりかわらないような(w

      もともと早いと,生身の速度認識の体感誤差に入ってしまって,感じないのかもしれません(爆)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください