Php Symfony 2性能优化

Php Symfony 2性能优化,php,performance,symfony,optimization,frameworks,Php,Performance,Symfony,Optimization,Frameworks,我们正在寻找一个PHP框架,以便将来使用,目前正在使用Symfony 2进行测试。为此,我们重新设计了API,并在Symfony中将其作为捆绑包实现。事实证明,Symfony似乎非常慢,实际上比我们的旧系统慢得多 我们试图通过缓存字节码来优化性能(为此使用APC)。虽然我们已经注意到性能有了巨大的提高(加载API之前:大约3秒;加载API之后:平均0.6秒(仍然比没有APC的旧系统慢0.5秒)),我们有点激动,但仍然不太满意这样一个简单任务的高加载时间,比如从一个几乎空的数据库中得到一个结果 我

我们正在寻找一个PHP框架,以便将来使用,目前正在使用Symfony 2进行测试。为此,我们重新设计了API,并在Symfony中将其作为捆绑包实现。事实证明,Symfony似乎非常慢,实际上比我们的旧系统慢得多

我们试图通过缓存字节码来优化性能(为此使用APC)。虽然我们已经注意到性能有了巨大的提高(加载API之前:大约3秒;加载API之后:平均0.6秒(仍然比没有APC的旧系统慢0.5秒)),我们有点激动,但仍然不太满意这样一个简单任务的高加载时间,比如从一个几乎空的数据库中得到一个结果

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

现在,在我们深入研究six 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

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

你看过这篇博文了吗


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

以下几点可以优化您的应用程序性能:

  • 升级PHP。PHP5.3和PHP5.4之间的性能增益非常高。PHP5.5甚至更好,但并非所有发行版都支持它,比如Debian7

  • NGINX比Apache更快,配置更简单

  • 将PHP-FPM与NGINX结合使用是一个很好的组合。如果用Grunt替换Symfony/Assetic,您还可以使用HHVM运行PHP,HHVM平均比PHP-FPM快2倍注意:在安全部署之前,HHVM需要更多的预防措施和测试。您可以阅读这两篇文章(法语):和

  • 不推荐使用PHP APC扩展。我认为XCache、Memcached或Redis更好,它们目前也得到了最多的支持。对于PHP>=5.5,APCu可以用作APC的替代品

  • 此外,您还可以阅读一些关于Symfony2优化的文章,并提供细枝基准测试

    PHP文章:

    • 用法语
    • 用法语
    • 用法语
    • 用英语
    • 用英语
    Symfony2和细枝文章:

    • 用英语
    • 用法语
    • 用法语
    • 用英语
    • 用法语
    • 限制不必要的捆绑包的使用
    • 用英语
    • 如果您不想使用细枝引擎,请使用法语
    • 从它的食谱-真的令人印象深刻
    其他优化:

    • 也许你可以使用更新版本的Ubuntu
    • 就我个人而言,我更喜欢使用Debian,它在服务器上也很流行,因为它非常稳定
    • 使用类似Varnish的缓存代理可能是一个画龙点睛的工作
    • 清漆需要显影剂的暗示,也可能需要一种形式。使用NGINX FastCGI缓存将FastCGI请求限制到HHVM、FPM或PHP-NG可以解决速度响应问题

    您可以尝试本文建议的方法:

    作者建议:

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

    所描述的代码在github上可用:

    您是否也在缓存doctrine stuff查询和元数据?这是一个广泛的问题。您是否在
    prod
    环境中运行?您是否找到了性能瓶颈所在?您使用的是什么操作系统和php版本?@Touki我更新了我的帖子并添加了所需的信息。我们还在
    prod
    上运行,并缓存了所有可能的内容。有一个缓存文件加载了很多常见的Symfony类,但并不是所有的。甚至不接近。我知道你说你正在生产模式下运行,但你可能需要再次检查。谢谢你的回答。不幸的是,所提供的文章都是用法语写的,甚至在几乎没有集中精力之后——我一个字也听不懂(是否有任何英文版本?是的,你完全有理由。我添加了几篇英文文章,我认为你有优化解决方案的所有途径。感谢更新你的帖子。我们研究了你的每一个建议,并能够将我们API的加载时间大大缩短到0.1秒以下,这是非常重要的。)非常感谢您的帮助,+接受您的答案。请将链接文章中最重要的部分添加到您的答案中。