2015-09-01 17 views
23

Starałem się odtworzyć ten wzorzec, który porównuje PHP 7 ze starszymi wersjami na serwerze WordPress: http://talks.php.net/oz15#/wpbenchPHP 7 Wydajność

Moja konfiguracja jest prawie taka sama, serwer ma i7, SSD, 16GB RAM i debian . Oprogramowanie serwera to nginx. Zaskakujące jest to, że moje wyniki znacznie różnią się od tych, które mam powyżej.

w swoich badaniach oblężenie (https://www.joedog.org/siege-home/) przesyła następujące:

PHP 7.0.0RC1:

siege -c100 -r100 http://10.22.255.133/wordpress/ 
** SIEGE 3.0.8 
** Preparing 100 concurrent users for battle. 
The server is now under siege..  done. 

Transactions:     10000 hits 
Availability:     100.00 % 
Elapsed time:     131.61 secs 
Data transferred:    95.77 MB 
Response time:     0.75 secs 
Transaction rate:    75.98 trans/sec 
Throughput:     0.73 MB/sec 
Concurrency:     56.98 
Successful transactions:  10000 
Failed transactions:   0 
Longest transaction:   1.01 
Shortest transaction:   0.04 

PHP 5.6.12:

siege -c100 -r100 http://10.22.255.133/wordpress/ 
** SIEGE 3.0.8 
** Preparing 100 concurrent users for battle. 
The server is now under siege..  done. 

Transactions:     10000 hits 
Availability:     100.00 % 
Elapsed time:     63.41 secs 
Data transferred:    95.77 MB 
Response time:     0.03 secs 
Transaction rate:    157.70 trans/sec 
Throughput:     1.51 MB/sec 
Concurrency:     4.45 
Successful transactions:  10000 
Failed transactions:   0 
Longest transaction:   0.63 
Shortest transaction:   0.01 

Kiedy patrząc na kurs transakcji widać, że PHP 5 jest około dwa razy szybsze niż PHP 7. Nie mogę wierzy, że.

Kolejnym interesującym faktem jest to, że uruchomienie tego testu porównawczego (http://www.php-benchmark-script.com/) powoduje, że PHP 7 jest około 3 razy szybsze niż PHP 5 (oczywiście na tym samym serwerze, na którym przetestowałem także Wordpress). Zmierzone wyniki:

  • PHP 7.0.0RC1 | PHP 5.5.28
  • Matematyka: 0.201 | 0.683
  • Manipulacja strunami: 0.271 | 0,77
  • Pętle: 0.166 | 0.486
  • Jeśli Else: 0.12 | 0,295

został przesłany zarówno phpinfo() w przypadku plików, które pomagają:

Czy masz pojęcie, dlaczego PHP 7 jest o wiele wolniejszy w moich testach z Wordpress?


Z opcache włączona PHP 7 jest faktycznie dwa razy tak szybko, jak PHP 5. Dzięki MJH za podpowiedź!

Dokonałem następujących pomiarów na losowo wypełnionym serwerze WordPress.

Siege teraz wyprowadza następujące dla PHP 7.0.0RC1:

Transactions:     10000 hits 
Availability:     100.00 % 
Elapsed time:     62.14 secs 
Data transferred:    604.20 MB 
Response time:     0.02 secs 
Transaction rate:    160.93 trans/sec 
Throughput:      9.72 MB/sec 
Concurrency:     3.77 
Successful transactions:  10000 
Failed transactions:    0 
Longest transaction:   0.41 
Shortest transaction:   0.01 

I PHP 5.6.12:

siege -c100 -r100 http://10.22.255.133/wordpress/ 
** SIEGE 3.0.8 
** Preparing 100 concurrent users for battle. 
The server is now under siege..  done. 

Transactions:     10000 hits 
Availability:     100.00 % 
Elapsed time:     119.98 secs 
Data transferred:    604.20 MB 
Response time:    0.60 secs 
Transaction rate:    83.35 trans/sec 
Throughput:     5.04 MB/sec 
Concurrency:     49.86 
Successful transactions:  10000 
Failed transactions:   0 
Longest transaction:   4.06 
Shortest transaction:   0.04 
+2

Czy wyłączyłeś obsługę sesji dla testu? Czy uruchomiłeś 'siege' na tym samym komputerze, na którym zainstalowane są nginx i php-fpm? – Mjh

+0

Dziękujemy za odpowiedź! Obsługa sesji jest wyłączona, a Siege działa na innym komputerze w sieci lokalnej. Upewniłem się również, że sieć nie jest czynnikiem ograniczającym. –

+5

Czy konfiguracja 'php-fpm' jest taka sama dla obu wersji php? Wygląda na to, że opcache nie jest włączony dla twojego php 7, natomiast dla php 5. To samo może oznaczać ogromną różnicę .. – Mjh

Odpowiedz

17

Według wyjściu phpinfo pan pisał, opcache nie jest włączona do PHP 7, podczas gdy jest to dla PHP 5. Że sam może wynosić do ogromnej różnicy.

+0

Opublikował odpowiedź Mjha z komentarza jako wiki społeczności, więc to pytanie można oznaczyć jako rozwiązane. @Simsso, zaakceptuj tę odpowiedź, jeśli rozwiąże problem. –