首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony2在VirtualBox中的应用非常慢

Symfony2在VirtualBox中的应用非常慢
EN

Stack Overflow用户
提问于 2012-01-16 15:45:22
回答 5查看 5.9K关注 0票数 6

我在VirtualBox上运行Debian的虚拟副本,在nginx/php5-fpm/MySQL堆栈上开发一个更大的PHP应用程序。开发在主机操作系统(Windows7 x64)中进行,代码作为客户操作系统中的共享文件夹挂载。

表现很差。以下是用于本机vbox文件系统和带有cifs的samba挂载的web差动输出:

无论是哪种情况,filemtimefile_existsis_readable都需要几秒钟的时间才能运行。CPU负载很高,内存使用似乎很正常。

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

我真的很感激我能得到的帮助!

编辑:澄清,生产性能很好。在我们的(适当的,非虚拟的)临时服务器上,PHP代码在生产设置中以大约60 in的最大值执行,在dev模式下执行在100到200 in之间。

我需要帮助找出为什么VirtualBox在dev & prod模式下慢了100倍。

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-16 21:52:37

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

您的分析表明文件系统操作是瓶颈。

请阅读此博客文章http://clock.co.uk/tech-blogs/virtualbox-404-shared-folder-update以获得更多的见解。

票数 5
EN

Stack Overflow用户

发布于 2012-01-16 17:50:43

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

我会把它写一份小简历。您不应该仅仅基于app_dev.php前端控制器来衡量应用程序的性能。此控制器已创建,仅用于开发。在开发过程中,您会对配置文件、细枝模板、资产等进行大量更改。Symfony将检查100个文件以进行修改,并在必要时重新加载许多以前缓存的内容,从而导致对filemtimefile_existsis_readable的大量调用。所有这些调用都在生产模式中被绕过,因为Symfony期望缓存中的所有内容都是最新的。因此,几乎所有可能的东西都被缓存在生产模式中,并在没有Symfony检查文件是否已被修改的情况下立即使用。这带来了巨大的性能提升,因为在开发中重新加载单个文件可能需要很多时间来解析它、检查对它的依赖关系、根据这些文件重新执行所有内容等等。

如果您正在对您的应用程序进行基准测试,请将其作为生产模式的基准测试。至少,如果无法按照生产中所期望的那样设置所有硬件,请执行以下步骤。清除生产模式的缓存,使用app.php而不是app_dev.php。另外,请查看文档中关于性能的部分,该部分可以在symfony.com上找到。在这里,控制台调用以清除和预热生产环境中的缓存。我认为cache:clear也会对缓存进行热身,但是由于我不能百分之百确定,所以我更喜欢同时打两个电话:

代码语言:javascript
复制
php app/console cache:clear --env=prod --no-debug
php app/console cache:warmup --env=prod --no-debug

希望这能有所帮助。

你好,马特

票数 5
EN

Stack Overflow用户

发布于 2012-01-17 18:38:57

只是为了把这个绑起来:

最后,我在客户操作系统上设置了samba共享,将其绑定到第二个网络适配器(仅供主机使用,如本指南所示),并将其作为网络驱动器挂载在主机操作系统中。

有点麻烦,但执行时间从5-13秒缩短到100到500毫秒,在开发模式下进行分析。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8882411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档