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


Symfony 2. Migration project to php 7 from php5.5. Performance issues

我有一个4年前的项目,我从5.3和Symfony 2.0开始,迁移到5.5和S2.3。目前我迁移到了S2.8,我想迁移到php7。

由于围绕PHP7的性能有很多堆,我渴望在dev-env中测试我的项目性能。

所以在dev-env中运行基准测试;该服务位于同时具有php5-fpm和php7.0-fpm的流浪主机上,关闭一个并设置另一个。

我预计php7会优于php5,但基本上,php7在我的本地dev-env上似乎慢1.5-2倍

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

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

第页。S.是的,我知道在本地dev-env中运行基准测试并不是100%有效和纯粹的,但我只需要了解php7是否比php5快,正如它所说的那样。

U1

最有趣的是,blackfire清楚地表明php7比php5快45%。但当我进行筛选时,我发现性能会下降。

U2

这或多或少是我为dev-env定制的配置。php5.5和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

全局优化PHP代码和PHP7:的几个步骤

  • composer自更新
  • composer更新
  • 作曲家dumpautoload-a
  • 激活zend操作缓存(或任何其他已安装的php操作缓存)
  • 在php.ini中:
    • opcache.max_accelered_files=20000(或更多)
    • opcache.validate_timestamps=1
    • opcache.revalidate_freq=10(或更多)
    • xdebug.default_enable=0
  • 重新启动php-fpm7服务

如果性能问题仍然存在,请使用blackfire评测典型的测试页面。

这样做的原因肯定是xdebug。请关掉它,然后检查性能。

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

在Symfony配置中删除此项后,应用程序开始显示我们所希望的性能提升。