Symfony 2.从php5.5迁移到php 7的项目。 性能问题

我有一个项目〜4岁,我从5.3和Symfony 2.0开始,迁移到5.5和S2.3。 目前我已迁移到S2.8,我想迁移到php 7。</ p>

由于围绕PHP 7的性能有很多堆我渴望在开发环境中测试我的项目性能 。</ p>

因此在dev env中运行基准测试; 服务是在流浪的主机上有php5-fpm和php7.0-fpm,关闭一个并设置另一个。</ p>

我希望php7会胜过php5,但基本上似乎是 我的本地开发环境中的php7 慢1.5-2倍</ strong>。</ p>

我做错了什么? 或者我应该以某种方式重写我的应用程序?</ p>

phpinfo:
php 7 http://pastebin.com/a6a76vE2 < / a>
php 5 http://pastebin.com/4GBXNmBB </ p>

PS 是的,我知道在本地开发环境中运行基准测试不是100%有效和纯粹,但我只需要了解php7是否比php5更快,正如它所说的那样。</ p>

U1 </ strong> </ p>

最有趣的是blackfire清楚地表明php 7比php 5快〜45%。但是当我在围攻时,我看到性能会下降。</ p >

U2 </ strong> </ p>

这里或多或少是dev env的自定义配置。 对于php5.5和php7也一样:</ p>

  [Date] 
date.timezone = Europe / Tallinn

[PHP]
memory_limit = 512M
expose_php = Off
cgi.fix_pathinfo = 0
post_max_size = 10M
upload_max_filesize = 10M
max_execution_time = 60
realpath_cache_size = 4096k
realpath_cache_ttl = 7200

error_reporting = E_ALL | E_STRICT
log_errors = On
error_log = /var/log/php.errors.log

display_errors = On
display_startup_errors = On
html_errors = On

; xdebug
xdebug.remote_enable = On
xdebug.remote_port = 9001
xdebug.max_nesting_level = 200
xdebug.remote_log = /tmp/xdebug.log
xdebug.remote_connect_back = on
xdebug.idekey =“vagrant”

[opcache ]
opcache.enable_cli = 0
opcache.save_comments = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 66000
opcache.fast_shutdown = 1
opcache.enable = 1
opcache.revalidate_freq = 5 \ nopcache.validate_timestamps = 1
</ code> </ pre>
</ div>

展开原文

原文

I have one project ~4y old, I started with 5.3 and Symfony 2.0, migrated to 5.5 and S2.3. At the moment I migrated to S2.8 and I want to migrate to php 7.

As there was so much heap around PHP 7 performance I was eager to test my project performance in dev env.

So running benchmark in dev env; service is on vagrant host having both php5-fpm and php7.0-fpm, shutting one down and setting another up.

I would expect that php7 would outperform php5, but basically it seems that php7 is 1.5-2 times slower on my local dev env.

What am I doing wrong? Or should I rewrite my app somehow?

phpinfo: php 7 http://pastebin.com/a6a76vE2 php 5 http://pastebin.com/4GBXNmBB

P.S. Yes, I understand that running benchmarks in local dev env is not 100% valid and pure, but I need only to understand if php7 faster than php5, as it said.

U1

Funniest thing is that blackfire shows clearly that php 7 is ~45% faster than php 5. But when I am sieging, than I see that performance degrades.

U2

Here is more or less my custom configuration for dev env. It is the same for php5.5 and php7:

[Date]
date.timezone = Europe/Tallinn

[PHP]
memory_limit = 512M
expose_php = Off
cgi.fix_pathinfo = 0
post_max_size = 10M
upload_max_filesize = 10M
max_execution_time = 60
realpath_cache_size = 4096k
realpath_cache_ttl = 7200

error_reporting = E_ALL | E_STRICT
log_errors = On
error_log = /var/log/php.errors.log

display_errors = On
display_startup_errors = On
html_errors = On

; xdebug
xdebug.remote_enable = On
xdebug.remote_port = 9001
xdebug.max_nesting_level = 200
xdebug.remote_log = /tmp/xdebug.log
xdebug.remote_connect_back = on
xdebug.idekey = "vagrant"

[opcache]
opcache.enable_cli=0
opcache.save_comments=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=66000
opcache.fast_shutdown=1
opcache.enable=1
opcache.revalidate_freq=5
opcache.validate_timestamps=1

donglin4636
donglin4636 您是否检查过日志中的通知和警告?当我将我的项目从PHP5.X更新到7.X时,我有很多通知和警告,之前没有被注意到。它们可能与您的性能问题有关。
大约 3 年之前 回复
doucepei5298
doucepei5298 Vagrant使用虚拟机管理程序的共享文件夹功能。根据我的经验,切换到其他任何东西都会显着增强您的应用程序。
大约 3 年之前 回复
duanlaican1849
duanlaican1849 如果你使用apc缓存,PHP7重命名了这个库,Symfony类也改变了。您必须对所有apc定义使用apcu。
3 年多之前 回复
douren2395
douren2395 在进行任何性能测试之前,您应该禁用xdebug。
3 年多之前 回复
doutingyou2198
doutingyou2198 1.您确定在5.5下运行的所有PHP模块也运行在7.0之下吗?2.我会在没有启用xdebug的情况下测试任何内容(对于这两个版本)
接近 4 年之前 回复
duanliao5995
duanliao5995 清除缓存并重新安装一切。似乎并非如此。
4 年多之前 回复
dongzhe6287
dongzhe6287 Jevgeni,你在php版本切换后做“作曲家更新”吗?因为bundle可能有不同版本的php5和php7版本。
4 年多之前 回复
dongyoufo5672
dongyoufo5672 你在PHP7中启用了opcache吗?
4 年多之前 回复
dqxafj6830
dqxafj6830 我认为我的问题与配置有关,而不是与机器有关。但不知道该寻找什么。基本上php-fpm配置是一样的,池配置是一样的。代码是一样的。所以我没有明确的线索。
4 年多之前 回复
dongshengyin0147
dongshengyin0147 您是否尝试在另一台计算机上运行测试或使用其他配置?
4 年多之前 回复
drc15469
drc15469 非常适合你。任何提示要看什么?可能是一些opcache设置,app配置调整或bootstrap缓存?
4 年多之前 回复

2个回答



在全局和PHP7中优化PHP代码的几个步骤:</ p>


  • composer selfupdate </ li>
  • composer update </ li>
  • composer dumpautoload -a </ li>
  • 激活zend opcache(或任何其他已安装的php opcache)</ li> \ n
  • 在php.ini中:


    • opcache.max_accelerated_files = 20000(或更多)</ li>
    • opcache.validate_timestamps = 1 </ li>
    • opcache.revalidate_freq = 10(或更多)</ li>
    • xdebug.default_enable = 0 </ li>
      </ ul> </ li>
    • 重启php-fpm7服务 </ li>
      </ ul>

      如果性能问题仍然存在,请使用 blackfire对您的典型测试页进行概要分析 。</ p>
      </ div>

展开原文

原文

Few steps to optimize PHP code globally and for PHP7 :

  • composer selfupdate
  • composer update
  • composer dumpautoload -a
  • activate zend opcache (or any other installed php opcache)
  • in php.ini :
    • opcache.max_accelerated_files=20000 (or more)
    • opcache.validate_timestamps=1
    • opcache.revalidate_freq=10 (or more)
    • xdebug.default_enable=0
  • restart php-fpm7 service

If performance issues still persist, profile your typical test page with blackfire.



这个的原因肯定是xdebug。 请关闭它,然后检查性能。</ p>

我必须指出,在从PHP5.5 / Symfony 2.0切换到PHP7 / Symfony 3.0之后我们确实遇到了性能下降 。 这是由Symfony 2.8+如何处理php会话引起的。 它将它们存储在本地目录而不是标准/ tmp目录中,该目录几乎总是存储在RAM中。 因此,如果您有相当多的会话文件,那么从HDD中搜索文件需要很长时间。</ p>

在Symfony配置中删除后,应用程序开始显示性能提升 我们希望。</ p>
</ div>

展开原文

原文

The reason of this will surely be the xdebug. Please turn it off and then check the performance.

I have to point out that in our case after switching from PHP5.5/Symfony 2.0 to PHP7/Symfony 3.0 we did encountered a performance drop. This was caused by how Symfony 2.8+ handles the php sessions. It stores them in a local directory instead of standard /tmp directory which almost always stored in RAM. So if you have pretty big count of session files the search of the file from HDD takes a long time compared to RAM.

After removing this in Symfony config, the application started showing the performance gains we hoped for.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐