Vagrant の Ubuntu 14.04 で実行されている Nginx/PHP-FPM セットアップで PHP 5.5 の OPcache を動作させようとしています。
ディレクトリを/etc/php5/mods-available/opcache.ini
次のように構成しました。
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=50000
を実行するphp -v
とphpinfo()
、OPcache が有効になっていることが示され、opcache-statusとopcache-guiをロードすると同じことが示されます。
OPcache GUI では、ファイルがキャッシュされていることがわかります。OPcache を詳細モードでログに記録するように設定して、これを確認しました。問題は…彼らは決して攻撃を受けないということです!
私は ApacheBench を実行してアプリケーションを攻撃しましたが、ヒットが 1 つも登録されていません。0 ヒットと 103 ミスです。hello_world.php
単に実行するファイルをテストしたこともあり、echo 'Hello, world!';
それも毎回「ミス」として登録されます。
誰が何が間違っているのか考えていますか?
更新:
登録されているヒットの再現可能なケースを取得することができました。を実行した直後にservice php5-fpm restart
、100 の同時接続で ApacheBench を実行すると、キャッシュが 75% を超えてヒットします。それ以降、各「通常の」更新もヒットとして登録されます。
ただし、php-fpm を再起動して最初のリクエストが「通常」(つまり、Web ブラウザからのもの) である場合、ApacheBench を 100 の同時接続で実行すると、すべて失敗します…</p>
それ以降ヒットを持続させるためには、最初のリクエストがサーバーを叩く必要があるようなものです... 本当に奇妙です! php-fpm がプロセスを生成する方法に関係している可能性があると想定していますが、私はその分野では本当に初心者なので、これが誰かに手がかりを与える場合は、助けてください!