先の一昨日,自鯖上で, 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 のキャッシュの効果は,多分,大したもんなんだろう。
APC Control Panel ってのがあるらしいので, Opcache にもあるのかなと思って探してみたら, Opcache Control Panel (実体は ocp.php だけ) というのがあって,ブラウザから Opcache を操作出来て便利。なんだけど, phpinfo 関数を有効にしないと動かないので,アクセス制限はかけておかないといけないよ。
くりくりさんが,「APC / OPcacheについて」というページを教えてくれた。こういう比較サイトはほかにもいろいろあるから,やってみる前にググって見るといいと思う。
「本家のお世話-#90。(Opcacheを使う)」への8件の返信
おはようございます。
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のままだったでしょう。
ありがとうございます。
くりくりさん,こんにちは。
> ありがとうございます。
いえ,とんでもないです。どういたしまして。
ところで,くりくりさんのページにあった,「ZendOpcacheとAPCuではじめるハイパフォーマンスPHP (2014.3.9–リンクを貼り替えた。元記事の日付は,2013.10.15だったのに,内容は同じで2014.02.27になっている。引っ越し後の直し忘れか?)」さんを参考に,APCuをやってみまして,ベンチ採ってみたんですが,効果がよくわからなくて,現時点では停止させています。どこかで,APC本体ではなく,APCuの効果をしっかり確認できる方法を載せてあるところに,心当たりありませんか。
Windowsでの導入そのものは,しっかりDLLが作られていたので,簡単だったです。APCu単独のインストール情報はあまりなかったので,上記のサイト以外では,Alternative PHP CacheやInstalling 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で使うときでも,体感が違っているので,導入の意味は,十分あった気がします。
こんばんは
>APCuの効果をしっかり確認できる方法を載せてあるところに,心当たりありませんか。
探してみましたけど、ありませんねー。
googleの予測変換というのでしょうか?
php opとやるとopcacheはでてきますが、apcuはまったく
ありません。みんな検索しないのでしょう・・・。
APCuをもうすでにやったんですか!!
俺も早いですけど、o6asanさんも早いですね。
くりくりさん,こんばんは。
> 探してみましたけど、ありませんねー。
なかったですか。探していただいて,ありがとうございました。
APCuは,入れてみても,すぐに効果は実感できませんでした。ユーザキャッシュということなので,ユーザが多くないと実感できないのかもしれないです。動かしておいて,ときどき,apc.writableの状況を見るという方法も考えたのですが,当面は,停止にしておきます。APCから分かれたばかりのようですから,Opcache+APCuで使う方が増えれば,そのうち情報も手に入りやすくなるでしょう。
> 俺も早いですけど、o6asanさんも早いですね。
もともと,早いのが取り柄だったんですけど(爆)。近頃はどうもついていけなくなってきています。ActivePerl-5.18.1.1800へのアップグレードも,26日にやっと済ませたところです。インストール方法に変更もなく,自鯖では,特に不具合も出なかったので,記事は書きませんでしたが。
こんにちは
今更ながらこっそり会社のサーバーにAPCを導入してみました。
opcacheはバージョン5.5からなんでバージョンアップをしちゃうと
php-cgiが使えなくなる可能性があるのでこのままです。
くりくりさん,こんばんは。
> バージョンアップをしちゃうとphp-cgiが使えなくなる可能性がある
そんなものなんですか?
> 今更ながらこっそり会社のサーバーにAPCを導入してみました。
感触はどうですか。
おはようございます。
>そんなものなんですか?
mod_fcgidがepelにあっていれてみたんですが
remiでphp5.4にしてみましたらいつのまにかうごかなくなってました。原因はちゃんと究明しておりません。
これもremiにしない原因のひとつです。
>感触はどうですか。
あんまりかわらないような(w
でもよくなることはあっても悪くなることはないと思うので
いれてみました。
くりくりさん,こんにちは。
> これもremiにしない原因のひとつです。
どんどん新しいものを取り入れていくだけに,整合性が後回しになるんでしょうか。もっとも, remi あたりのコンセプトでは,その辺は,利用するユーザの側でやってくれということなのかもしれないですね。
> あんまりかわらないような(w
もともと早いと,生身の速度認識の体感誤差に入ってしまって,感じないのかもしれません(爆)。