因此,我们希望尽快发布基于Laravel 5.1的项目,但我们注意到性能不佳,我们正在尝试优化服务器设置。
如标题中所列,我们将在CentOS 6.7服务器上部署它,使用Nginx 1.8.1和PHP 7以及PHP-FPM。由于CentOS 6.7的存储库不提供PHP 7,我们正在使用IUS的替换软件包。
我们注意到可能导致性能不佳的事情之一就是Zend Opcache尽管已启用并正常工作(我们的命中率很高),但似乎并没有缓存我们项目中的所有文件。我们使用opcache-gui来帮助可视化缓存的内容,虽然项目的许多文件都在那里(包括来自第三方库的文件),但大多数文件都丢失了,包括我们的主控制器和许多支持类。实际上,当我们禁用Opcache时,响应时间几乎保持不变。 opcache黑名单目前是空的,所以这不是他们没有被包括在内的原因。
我们尝试使用opcache_compile_file()强制缓存丢失的文件,并且在编译和缓存文件时,它们永远不会得到任何命中。
据我了解,Opcache会缓存正在执行的所有文件,但这似乎不是这里发生的事情。我查看了opcache设置,但除了黑名单之外,找不到明显会影响这种行为的设置。
还有什么我想念的吗?在决定缓存内容时PHP会依赖的任何其他标准吗?
对此事的任何帮助都将不胜感激!
答案 0 :(得分:0)
您可以查看opcache.max_file_size
的值吗?也许这是你的问题,因为编译的文件比原始文件大。
您可以使用http://php.net/opcache-is-script-cached测试您在opcache-gui中看不到的文件吗?
另外,作为测试,你可以尝试强制编译吗?使用http://php.net/opcache-compile-file来解决此问题。只是看看是否有true
以及是否可以在第一时间编译它。