Performance Symfony2应用程序在VirtualBox中速度非常慢

Performance Symfony2应用程序在VirtualBox中速度非常慢,performance,symfony,virtualbox,php,Performance,Symfony,Virtualbox,Php,我在VirtualBox上运行了一个Debian的虚拟副本,以便在nginx/php5 fpm/MySQL堆栈上开发一个更大的PHP应用程序。在主机操作系统(Windows 7 x64)中进行开发时,代码作为共享文件夹装载到来宾操作系统中 表现很差。以下是本机vbox文件系统和带有cifs的samba装载的webgrind输出: 在这两种情况下,filemtime,file\u存在,可读运行需要几秒钟。CPU负载非常高,内存使用似乎正常 这三个函数的输出不是都缓存在stat缓存中吗?为什么要

我在VirtualBox上运行了一个Debian的虚拟副本,以便在nginx/php5 fpm/MySQL堆栈上开发一个更大的PHP应用程序。在主机操作系统(Windows 7 x64)中进行开发时,代码作为共享文件夹装载到来宾操作系统中

表现很差。以下是本机vbox文件系统和带有cifs的samba装载的webgrind输出:

在这两种情况下,
filemtime
file\u存在
可读
运行需要几秒钟。CPU负载非常高,内存使用似乎正常

这三个函数的输出不是都缓存在stat缓存中吗?为什么要花这么长时间

我真的很感激能得到的任何帮助

编辑:澄清一下,生产性能良好。在我们的(适当的、非虚拟的)暂存服务器上,PHP代码在生产设置中以最大60毫秒的速度执行,在开发模式下以最大100-200毫秒的速度执行

我需要帮助找出为什么VirtualBox在开发和生产模式下慢100倍


我刚检查过,生产设置产生~5秒的执行时间。仍然无法使用,而且开发起来很尴尬。

我最近回答了一个类似的问题。你可以找到我以前的答案

我会做一个小简历。您不应该仅仅基于
app\u dev.php
front控制器来衡量应用程序的性能。创建此控制器仅用于开发。在开发过程中,您会对配置文件、细枝模板、资产等进行大量更改。Symfony将检查数百个文件进行修改,并在必要时重新加载大量以前缓存的内容,因此对
filemtime
file\u存在
可读
。所有这些调用在生产模式下都被忽略,因为Symfony希望缓存中的所有内容都是最新的。因此,几乎所有可能的内容都在生产模式下缓存并立即使用,而无需Symfony检查文件是否已修改。这将极大地提高性能,因为在开发过程中重新加载单个文件可能需要花费很多时间来解析它、检查对它的依赖关系、根据此文件重新缓存所有内容等等

如果您正在对应用程序进行基准测试,请将其作为生产模式进行基准测试。至少,如果在生产中无法按预期进行所有硬件设置,请执行以下步骤。清除生产模式的缓存,并使用
app.php
而不是
app\u dev.php
。此外,请查看文档中symfony.com上关于的部分。在这里,控制台调用在生产环境中清除并预热缓存。我认为
cache:clear
也会使缓存预热,但由于我不是100%确定,我更喜欢两个调用:

php app/console cache:clear --env=prod --no-debug
php app/console cache:warmup --env=prod --no-debug
希望这有帮助

问候,,
Matt

除了
Matt
所说的之外,我建议您编译twig扩展并将其用作php模块。它将更快地生成模板。但最重要的还是在prod环境中运行应用程序的任何基准测试,而不是在dev或test中。确保不要在生产环境中加载xdebug模块,因为它也会降低基准测试的速度


我不知道您的具体设置,但如果您安装适当的反向代理(也称为Varnish),而不是
AppCache
,以尽可能少地请求应用程序本身,则很可能会获得更好的结果。

使用nfs文件共享。Samba和vbox文件共享可能非常慢

您的评测表明文件系统操作是瓶颈

阅读这篇博文以获得更多的见解

,仅此即可:

最后,我在来宾操作系统上设置了一个samba共享,将其绑定到第二个网络适配器()上,并将其作为网络驱动器装载到主机操作系统中


有点不对劲,但在开发模式下,通过评测,执行时间从5-13秒减少到100-500毫秒。

也有同样的问题,通过设置rsync cron,使VM和主机上的代码保持同步,解决了这个问题

显然,Virtualbox共享文件夹在文件读取/写入方面非常缓慢:/


谢谢你,马特!关于prod和dev模式之间的区别,您是对的,我提到的三个PHP函数完全从profiler中消失了。然而,我仍然想知道为什么VirtualBox需要如此长的时间来执行我的代码。我已经在上面的问题中澄清了这一点。干杯,PhilippI我说不准为什么VirtualBox这么慢。也许这个虚拟机在文件系统交互方面不是特别好。您可以尝试其他虚拟机来检查它们的性能。也许@PeteMitchell的回答会有所帮助。在这一点上,我将集中精力搜索VirtualBox。祝你的问题好运。你好,MattI会查C分机的,谢谢Anton。我对类似的物理Debian安装在生产环境中的性能没有任何抱怨。我已经扩展了我上面的问题,对不起,如果它是含糊不清的。刚刚发现我的一个同事正在使用VirtualBox,他在为它分配更多内存之前遇到了类似的问题。如果可以的话,试试看。谢谢你,皮特,我会调查的。考虑同样的问题,因为我有完全相同的性能问题。已尝试vboxsf装载,NFS。。。它比直接文件读/写慢几倍。不幸的是,我通过Eclipse在存储库上进行了大量搜索,同时搜索了一些东西。。。而且似乎要慢很多。