为了账号安全,请及时绑定邮箱和手机立即绑定

关于symfony性能

Hi,洪大师:

              有个关于symfony的性能问题想请教一下,我们目前用symfony做了一个项目,通过对discuz做的一个依赖注入来实现插件的开发,实现方式是在discuz加载配置的时候载入了symfony并重写了 discuz的配置。这个就导致了我们现在开发的这个产品的性能上不去,目前测tps (每秒事务数)也就是 100左右,discuz原生的环境首页tps在500左右,在symfony框架下输出phpinfo在我们的测试环境下tps只有300左右 。

 目前symfony部分已经做的优化:

  1. 在web/app.php中开启apc缓存加载:

    $loader= require_once __DIR__.'/../app/bootstrap.php.cache';

    $apcLoader = new ApcClassLoader(sha1(__FILE__), $loader);

  2. 在app/config/config.yml中开启了doctrine的查询缓存,将doctrein的metadata_cache_driver,query_cache_driver,result_cache_driver,设置为redis缓存

  3. 在将symfony设置为prod模式.ps:这一块可能有点问题,因为我在转为prod模式的时候出现Segmentation fault 提示,但是我看了额app/cache的目录下 prod的文件夹也生成了。去google了好久也没找到问题的所在,在源码中抓 也没抓到,好奇怪。

  4. 在composer中的自动加载也做了优化 composer dump-autoload --optimize ,优化了生成了一个自动加载的数组。

大师,你看看还有什么地方可以再做优化的么?

以上的压测数据是单台压测的结果。

我们的项目的PV大概有1400W。架构里面有3台php机,前面2台代理机,3台mysql(1主2从),2台redis(主从)所有现在压测的结果是不符合要求的。

谢谢了


By  山鸡的机

正在回答

1 回答

如果是这种搭配其他框架使用的例子我建议你把sf2的项目做成一个单独的项目,然后用sso之类的方法去做跨项目之间的用户共享。


doctrine的cache如果你在操作数据不是很频繁的时候其实帮助是不大的。

composer dump-autoload --optimize其实主要就是把你的vendor里的所有php类预先载入一个大的php文件,这样载入起来就会比较快。

从性能优化上来说,sf2由于默认开启的功能和组件非常多,有很多你如果用不到的东西可以关掉,当然也有很多地方可以优化,但我我建议你先装一个系统调用图生成工具,把运行一个具体业务时的所有sf2内部的调用给打印出来,看一下具体时间都耗费在什么上了,然后再去有的放矢的去做优化。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于symfony性能

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信