为啥 Symfony 2 在我的环境中响应非常缓慢?

Posted

技术标签:

【中文标题】为啥 Symfony 2 在我的环境中响应非常缓慢?【英文标题】:Why is Symfony 2 responding EXTREMELY slowly in my environment?为什么 Symfony 2 在我的环境中响应非常缓慢? 【发布时间】:2013-04-12 01:55:11 【问题描述】:

我有一个运行 Debian Squeeze 的 VMware 虚拟机。我所有的项目都在我的 Windows 机器上的一个文件夹中,Debian VM 可以通过 VMware 共享文件夹访问。这意味着我可以在我的 Windows 机器上使用适当的文本编辑器来处理我的项目,同时从 linux 环境中托管它们。我已经使用这个设置几个月了,在使用 php 或其他与开发相关的任务托管 Apache 站点时没有问题,直到我尝试了 Symfony。

我现在在我的 htdocs 目录和我的 Windows 机器上共享了一个 Symfony 2 开箱即用演示的实例 (Symfony_Standard_Vendors_2.2.1.tgz)与虚拟机。我的 htdocs 目录如下所示:

htdocs
|`- Symfony
 `- Symfony_shared -> /mnt/hgfs/Dropbox/Symfony

Symfony 是位于 htdocs 文件夹中的实际物理目录,而 Symfony_shared 是指向我 Windows 机器上 Dropbox 文件夹的软链接。我必须重复;我以前从未遇到过这种方法的任何性能问题。

相同的文件系统

现在 - 当我在浏览器中访问 http://devmachine.local/Symfony/web/app_dev.php 并进入分析器时,我看到了这些数字:

总时间 83 毫秒
初始化时间 43 ms

非常好的数字。整个响应在不到 100 毫秒的时间内就准备好了。

链接

但是当我访问http://devmachine.local/Symfony_shared/app_dev.php 时,我在分析器中看到非常不同的数字:

总时间 6833 毫秒
初始化时间 4249 ms

谁能解释一下这些数字?什么是“初始化时间”,为什么超过 4 秒?请记住,这只是 Symfony 演示欢迎页面。我实际测试项目中的登录页面初始化时间为19秒,总时间为22秒。

我应该提一下,我还在两个目录中运行php app/console 进行了快速测试。在 Symfony 文件夹中,此命令会立即返回使用情况,而在 Symfony_shared 中则需要几秒钟才能响应。

我对 Symfony 文件夹所做的唯一更改是删除了 app_dev.php 中将流量限制为 127.0.0.1 的部分。


我在 Debian 6.0.7(挤压)上使用 Apache 2.4.4 和 PHP 5.4.14。

这是 Symfony_shared 欢迎页面分析器的屏幕截图:

【问题讨论】:

如果你点击config.php你不会收到警告? @cheesemacfly:不,只有通常的建议是禁用短打开标签并安装 PHP 加速器。 @cheesemacfly:有趣的是,配置页面在两个位置的加载速度一样快。 【参考方案1】:

检查您的 PHP 配置是否存在open_basedir 限制阻止您的统计缓存工作。 Symfony 会进行大量的fstat() 调用,如果这些调用没有被缓存,Symfony 会非常慢。您的符号链接也可能阻止统计缓存工作。如果您分析您的应用程序(并包含本机 PHP 函数),那么很明显是 fstat() 导致了您的问题。

在 PHP Bug #49383 有一些关于它的信息。

【讨论】:

在我的情况下,我同时拥有open_basedir = nonesafe_mode = off,但我仍然没有看到性能提升.. APCu 已启用(通过 phpinfo 确认),有什么想法还有什么问题吗?跨度> 这是跨符号链接吗?本地速度快吗? (1) 是的。 /var/www/my-projectnginx 配置中的根目录)是指向真实路径的符号链接(2)它目前只在本地运行 - 我正在努力让我的开发环境运行得更快(现在我在 dev 中得到 7~12 秒似乎太多了)【参考方案2】:

尝试将 PHP.ini 的 realpath_cache_size 设置为 > 1000 最近添加了一个 symfony 要求来解决这个问题:https://github.com/sensiolabs/SensioDistributionBundle/commit/cf0179711b24d84d4a29d71a4010540f4c990bd8

【讨论】:

以上是关于为啥 Symfony 2 在我的环境中响应非常缓慢?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Symfony Mailer 组件返回一个空响应?

为啥 Firebase 功能部署非常缓慢?

Symfony 4 在 DEV 中运行缓慢

PhoneGap + jQuery Mobile = 缓慢的点击响应时间

使用 Symfony 5 中的 FOSRestBundle 转换单个属性以进行响应

为啥我的 Ajax 响应显示在我的导航栏上?