pdd*_*pdd 6 php performance virtualbox symfony
我在VirtualBox上运行Debian的虚拟副本,在nginx/php5-fpm/MySQL堆栈上开发一个更大的PHP应用程序.开发在主机操作系统(Windows 7 x64)中进行,代码作为共享文件夹安装在客户操作系统中.
表现非常糟糕.以下是本机vbox文件系统的webgrind输出和带cifs的samba安装:

在这两种情况下filemtime,file_exists并is_readable需要几秒钟才能运行.CPU负载非常高,内存使用率似乎正常.
是不是所有这三个函数的输出都缓存在stat缓存中?他们为什么要这么久?
我真的很感激我能得到任何帮助!
编辑:为了澄清,生产性能很好.在我们的(适当的,非虚拟的)登台服务器上,PHP代码在生产设置中最多执行约60ms,在开发模式下执行100-200ms.
我需要帮助弄清楚为什么VirtualBox在开发和生产模式下要慢100倍.
我刚检查,生产设置产生约5秒执行.仍然无法使用,加上开发的尴尬.
我最近回答了类似的问题.你可以在这里找到我以前的答案.
我会做一个简历.您不应仅基于app_dev.php前端控制器来测量应用程序的性能.此控制器已创建仅用于开发.在开发过程中,您对配置文件,树枝模板,资产等进行了大量更改.Symfony将检查数百个文件以进行修改,并在必要时重新加载许多以前缓存的内容,因此需要大量调用filemtime,file_exists以及is_readable.所有这些调用都在生产模式下被绕过,因为Symfony期望缓存中的所有内容都是最新的.因此,几乎所有可能的东西都在生产模式下缓存并在没有Symfony检查文件是否被修改的情况下直接使用.这提供了巨大的性能提升,因为在开发中重新加载单个文件可能需要花费很多时间来解析它,检查它的依赖性,根据这些文件重新计算所有文件等等.
如果您对应用程序进行基准测试,请将其作为生产模式进行基准测试.至少,如果您无法按照预期的那样进行生产中的所有硬件设置,请执行以下步骤.清除生产模式的缓存并使用app.php而不是app_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
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
问候,马特
使用nfs文件共享.Samba和vbox文件共享可能非常慢.
您的分析表明文件系统操作是瓶颈.
阅读此博客文章http://clock.co.uk/tech-blogs/virtualbox-404-shared-folder-update以获取更多信息
| 归档时间: |
|
| 查看次数: |
5685 次 |
| 最近记录: |