2016-05-20 18 views
6

私たちはすぐにリリースしたいLaravel 5.1ベースのプロジェクトを持っていますが、サーバーの設定を最適化しようとしています。Zend Opcacheはすべてのファイルをキャッシュしていません(CentOS 6.7 + Nginx 1.8.1 + PHP 7 + Laravel 5.1)

タイトルに記載されているように、Nginx 1.8.1とPHP-FPMが搭載されたCentOS 6.7サーバーに展開しています。 CentOS 6.7のリポジトリはPHP 7を提供していないので、IUSの代替パッケージを使用しています。

Zend Opcacheは、有効になっているにも関わらず(ヒット率が高い)、プロジェクトのすべてのファイルをキャッシュしているようではないということが気づいています。 opcache-guiを使用してキャッシュの内容を視覚化し、プロジェクトのファイルの多く(サードパーティのライブラリからのファイルを含む)が失われていますが、メインコントローラやサポートクラスの多くが欠けています。実際、Opcacheを無効にすると、応答時間はほぼ同じになります。 opcacheブラックリストは現在空ですので、それが含まれていない理由はありません。

opcache_compile_file()を使用して不足しているファイルを強制的にキャッシュしようとしましたが、ファイルがコンパイルされてキャッシュされてもヒットしません。

Opcacheは実行されているすべてのファイルをキャッシュしていると私は理解していましたが、ここでは何も起こっていないようです。私はopcache設定を見てきましたが、ブラックリストとは別に、この種の動作に明らかに影響するものは見つかりませんでした。

他にも何かがありますか?キャッシュするかどうかを決めるときにPHPが依存する他の基準はどれですか?

問題についてのお手伝いがあります。

+0

私は言及したいと思った別のことは、加速ファイルの数に制限があることを認識しています。opcacheは処理することができます。これはopcache.iniファイルの 'opcache.max_accelerated_files'で調整できます。現在は8000に設定されていますが、これはすべてのファイルをカバーするのに十分なはずですが、約163ファイルしかキャッシュされません。 – santista

+0

メモリ消費量も問題ではないようです。opcache-memi_consumptionを介して128MBを割り当てたので、opcache-guiは23.1MBしか使用されていないことを示しています。 – santista

+0

これに対する解決策はありますか?私は同じ問題を抱えている。 – anon

答えて

0

opcache.max_file_sizeの値を確認できますか?コンパイルされたファイルが元のファイルよりも大きいので、それはあなたの問題です。

opcache-guiに表示されないファイルをhttp://php.net/opcache-is-script-cachedでテストできますか?

また、テストとして、コンパイルを強制することができますか?この問題にはhttp://php.net/opcache-compile-fileを使用してください。 trueがあるかどうかを確認し、最初にコンパイルできるかどうかを確認するだけです。

関連する問題