Symfony 2性能优化

时间:2014-08-20 12:57:38

标签: php performance symfony optimization frameworks

我们正在寻找将来使用的PHP框架,目前正在使用Symfony 2进行测试。为此,我们重新设计了API并将其作为Symfony中的捆绑包实现。事实证明,Symfony似乎非常缓慢 - 实际上比我们旧的(甚至没有精心设计的)系统慢。

我们尝试通过缓存字节代码来优化性能(使用APC)。虽然我们注意到性能有了很大的提升(之前:加载API大约需要3秒;之后:平均0.6秒(比旧系统慢<0.5秒没有 APC)),我们有点兴奋 - 但仍然不满意这么简单的任务的高加载时间,例如从几乎空的数据库中获取一个结果。

我不知道,但我可以想象这是由于Symfony自动加载所有类,即使特定包不需要。

现在,在我们深入研究六个Symfony之前,我们想要寻找进一步的优化,可能是一种排除特定捆绑中不需要的组件的方法,因为我个人认为这会产生很大的不同。

我感谢任何有关如何进一步提高绩效的想法,使用Symfony体验报告或其他任何可能对我们提供框架有用的信息。

编辑:

有关测试环境的一些信息:

  • 操作系统: Ubuntu 12.04.4 LTS(GNU / Linux 3.8.0-38-generic x86_64)
  • Apache版本: Apache / 2.2.22(Ubuntu)
  • PHP版本: 5.3.10-1ubuntu3.13
  • 相当多的PHP扩展: apc

此外,所有测试都在我们系统的本地副本上完成,因此可以排除可能的网络问题。

3 个答案:

答案 0 :(得分:14)

这些要点可以优化您的应用程序性能:

  1. 升级PHP。 PHP 5.3和PHP 5.4之间的性能提升非常高。 PHP 5.5会更好,但并不是所有发行版都支持,比如Debian 7。

  2. NGINX比Apache更快,配置也更容易。

  3. 将PHP-FPM与NGINX结合使用是一个很好的组合。您还可以使用HHVM运行PHP,平均比PHP-FPM快2倍,前提是您将Gmnt替换为Symfony / Assetic。 警告:在安全部署之前,HHVM需要更多的预防措施和测试。您可以关注这两篇文章(法语):JoliCodeBig Brains Company

  4. 不推荐使用PHP APC扩展程序。我认为XCache,Memcached或Redis更好,而且他们目前也得到了最多的支持。对于PHP&gt; = 5.5,APCu可以用作APC的替代品。

  5. 此外,您可以阅读一些谈论Symfony2优化并提供Twig基准测试的文章。

    PHP文章:

    Symfony2和Twig文章:

    其他优化:

    • 也许您可以使用Ubuntu的更新版本。
    • 就个人而言,我更喜欢使用Debian,它也很受服务器的欢迎,因为它非常稳定。
    • 使用像Varnish这样的缓存代理可以是一个点睛之笔。
    • 清漆需要开发人员的暗示,也许需要一个阵型。使用NGINX FastCGI Cache将FastCGI请求限制为HHVM,FPM或PHP-NG可以解决速度响应。

答案 1 :(得分:2)

你看过这篇博文了吗? http://symfony.com/blog/push-it-to-the-limits-symfony2-for-high-performance-needs

根据您的信息,我可以建议您使用PHP-FPM尝试php 5.5或5.6和NGINX,它可以快40%或更多。

答案 2 :(得分:0)

您可以尝试本文中建议的方法:http://stfalcon.com/en/blog/post/performance-symfony2-doctrine2-orm

作者建议:

  • 下载所有必要的连接
  • 按要求更新多个实体
  • 以关联数组的形式获取数据
  • 使用参考代理
  • 别忘了使用Symfony profiler工具栏

所描述的代码可在github上找到:https://github.com/lensky84/performance