我在Ubuntu Server12.04(64位) VM (VirtualBox)上运行Symfony2。主机是MacBook专业人员。由于某些原因,我在开发模式(app_dev.php)中得到了非常长的请求时间。我知道在dev模式下比较慢,但我说的是每个请求5-7秒(有时甚至更慢)。在我的Mac上,在开发模式下,我得到了200ms左右的请求时间。
在Symfony2分析器中查看了我的时间线后,我注意到大约95%的请求时间是“初始化时间”。这是什么?它会如此缓慢的原因是什么?
这个问题只适用于开发模式下的Symfony2,不适用于我在VM上运行的任何其他站点,甚至不适用于生产模式下的Symfony2。
我看到了这个(http://stackoverflow.com/questions/11162429/whats-included-in-the-initialization-time-in-the-symfony2-web-profiler),但它似乎没有回答我的问题。
发布于 2012-10-19 12:04:53
我找出了问题的原因(而不是Symfony2)。由于某些原因,在ubuntu虚拟机上,某些文件的修改时间是不正确的(例如,在将来,等等)。当symfony2使用filemtime()针对其注册表检查这些时间时,它会确定缓存不再是新的,并重新构建整个缓存。我还不能弄清楚它为什么要这么做。
发布于 2013-07-29 08:54:45
默认情况下,我收到来自Symfony2的5-30秒的响应。现在在开发环境中大约是500ms的。
然后,我在php.ini
中修改了以下内容
realpath_cache_size = 4M
(或完全more)phpinfo
)OPcache
(或APC),以便让php.ini重新加载瞧,在dev模式下,响应时间不到2秒!希望能有所帮助。
之前: 6779毫秒
后: 1587毫秒
Symfony2从数以千计的文件中读取类,这是一个缓慢的过程。当使用较小的PHP realpath缓存时,如果文件路径不在PHP的realpath缓存中,则每次在开发环境中发出新请求时,都需要逐个解析文件路径。对于Symfony2,realpath缓存默认情况下太小。在prod中,这当然不是问题。
缓存元数据:
缓存元数据(例如映射)对于进一步提高性能也非常重要:
doctrine:
orm:
entity_managers:
default:
metadata_cache_driver: apc
query_cache_driver: apc
result_cache_driver: apc
您需要为此启用APCu
。它是没有字节码缓存的APC
,因为OPCache
已经在做操作码缓存了。OPCache
是从PHP5.5开始内置的。
-之后的: 467 ms
(在prod环境中,相同的响应约为80 ms)
请注意,这是一个使用30+包的项目,有数以万计的代码,几乎上百个自己的服务,所以0.5s在本地Windows环境中使用几个简单的优化就相当好了。
发布于 2013-03-12 22:54:57
我还需要禁用xdebug (v2.2.21)
来调试我的macbook上的apache2最大超时加载。它是使用macports安装的:
sudo port install php54-xdebug.
在启用xdebug的情况下,每个页面都会耗尽最大加载时间,并且会出现致命错误,超过了调度的最大超时消息。禁用后,在合理的预期时间内,一切都可以正常加载。我使用的是MAMP,默认情况下没有启用xdebug,apache2的运行速度和往常一样快。我可能会换成另一个调试器,这很糟糕,因为xdebug以前工作得很好。
配置:
<代码>F211
https://stackoverflow.com/questions/12905404
复制相似问题