versión versiones php7 php5 obsoletas migracion how habilitar funciones entre diferencias características cambios cada actualizar php performance symfony php-7

versiones - Symfony 2. Proyecto de migración a php 7 desde php5.5. Problemas de desempeño



php 5.6 to 7 migration (2)

Tengo un proyecto ~ 4 años, comencé con 5.3 y Symfony 2.0, migré a 5.5 y S2.3. En este momento migré a S2.8 y quiero migrar a php 7.

Como había tanto montón en torno al rendimiento de PHP 7, estaba ansioso por probar el rendimiento de mi proyecto en dev env.

Ejecutando benchmark en dev env; el servicio está en el host vagabundo que tiene tanto php5-fpm como php7.0-fpm, cerrando uno y configurando otro.

Esperaría que php7 superara a php5, pero básicamente parece que php7 es 1.5-2 veces más lento en mi entorno de desarrollo local.

¿Qué estoy haciendo mal? ¿O debería reescribir mi aplicación de alguna manera?

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

PD Sí, entiendo que ejecutar benchmarks en dev env local no es 100% válido y puro, pero solo necesito entender si php7 es más rápido que php5, como se dijo.

U1

Lo más divertido es que blackfire muestra claramente que php 7 es ~ 45% más rápido que php 5. Pero cuando estoy asediando, veo que el rendimiento se degrada.

U2

Aquí está más o menos mi configuración personalizada para dev env. Es lo mismo para php5.5 y 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


La razón de esto seguramente será el xdebug. Por favor, apáguelo y luego verifique el rendimiento.

Tengo que señalar que en nuestro caso después de cambiar de PHP5.5 / Symfony 2.0 a PHP7 / Symfony 3.0 encontramos una caída de rendimiento. Esto fue causado por la forma en que Symfony 2.8+ maneja las sesiones de php. Los almacena en un directorio local en lugar del directorio estándar / tmp que casi siempre se almacena en la memoria RAM. Entonces, si tiene un recuento bastante grande de archivos de sesión, la búsqueda del archivo desde el disco duro tarda mucho tiempo en comparación con la memoria RAM.

Después de eliminar esto en la configuración de Symfony, la aplicación comenzó a mostrar las mejoras de rendimiento que esperábamos.


Pocos pasos para optimizar el código PHP globalmente y para PHP7:

  • compositor selfupdate
  • actualización del compositor
  • compositor dumpautoload -a
  • activar zend opcache (o cualquier otro opcache php instalado)
  • en php.ini:
    • opcache.max_accelerated_files = 20000 (o más)
    • opcache.validate_timestamps = 1
    • opcache.revalidate_freq = 10 (o más)
    • xdebug.default_enable = 0
  • reinicie el servicio php-fpm7

Si aún persisten problemas de rendimiento, perfile su página de prueba típica con blackfire .