2016-04-29 26 views
14

Ho un progetto ~ 4 anni, ho iniziato con 5.3 e Symfony 2.0, migrato su 5.5 e S2.3. Al momento ho migrato a S2.8 e voglio migrare a php 7.Symfony 2. Progetto di migrazione su php 7 da php5.5. Problemi di prestazioni

Dato che c'era un mucchio di prestazioni attorno a PHP 7, ero impaziente di testare le mie prestazioni di progetto in dev env.

Quindi benchmark in esecuzione in dev env; il servizio è su host vagabondo con php5-fpm e php7.0-fpm, spegnendone uno e impostandone un altro.

Mi aspetterei che php7 superi le prestazioni di php5, ma fondamentalmente sembra che php7 sia 1.5-2 volte più lento sul mio dev env locale.

Cosa sto sbagliando? O dovrei riscrivere la mia app in qualche modo?

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

P.S. Sì, capisco che l'esecuzione di benchmark in ambiente di sviluppo locale non è valida al 100% e pura, ma ho bisogno solo di capire se php7 è più veloce di php5, come si dice.

U1

cosa più divertente è che nerofuoco mostra chiaramente che php 7 è ~ 45% più veloce di php 5. Ma quando sto assediare, che vedo che degrada le prestazioni.

U2

Qui è più o meno la mia configurazione personalizzata per dev ENV. Lo stesso vale per php5.5 e 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 
+0

@VaheShadunts, ottimo per te. Qualche suggerimento su cosa guardare? Potrebbero esserci alcune impostazioni opcache, modifiche alla configurazione delle app o memorizzazione nella cache di bootstrap? –

+0

Hai provato a eseguire i test su un'altra macchina o con una configurazione diversa? –

+0

@ A.L Penso che il mio problema sia più legato alla configurazione, che alla macchina. Ma non sono sicuro di cosa cercare. Fondamentalmente la configurazione di php-fpm è la stessa, la configurazione del pool è la stessa. Il codice è lo stesso. Quindi non ho una chiara idea. –

risposta

0

Il motivo di ciò sarà sicuramente xdebug. Si prega di spegnerlo e quindi controllare le prestazioni.

Devo sottolineare che nel nostro caso dopo il passaggio da PHP5/Symfony 2.0 a PHP7/Symfony 3.0 abbiamo riscontrato un calo delle prestazioni. Questo è stato causato da come Symfony 2.8+ gestisce le sessioni di php. Li memorizza in una directory locale invece che in una directory standard/tmp che viene quasi sempre archiviata nella RAM. Quindi, se si dispone di un numero piuttosto elevato di file di sessione, la ricerca del file da HDD richiede molto tempo rispetto alla RAM.

Dopo aver rimosso questo in config Symfony, l'applicazione ha iniziato a mostrare i miglioramenti delle prestazioni che speravamo.

1

pochi passi per ottimizzare codice PHP globale e per PHP7:

  • compositore selfupdate
  • aggiornamento compositore
  • compositore dumpautoload -a
  • attivare zend opcache (o qualsiasi altra opcache php installato)
  • in php.ini:
    • opcache.max_acce lerated_files = 20000 (o più)
    • opcache.validate_timestamps = 1
    • opcache.revalidate_freq = 10 (o più)
    • xdebug.default_enable = 0
  • riavvio del servizio php-fpm7

Se i problemi di prestazioni ancora persistono, il profilo del tipico pagina di test con blackfire.