PHP 7-Leistung

Lesezeit: 5 Minuten

Benutzeravatar von Timo Denk
Timo Denken

Ich habe versucht, diesen Benchmark zu reproduzieren, der PHP 7 mit älteren Versionen auf einem WordPress-Server vergleicht: http://talks.php.net/oz15#/wpbench

Meine Konfiguration ist fast gleich, der Server hat einen i7, SSD, 16 GB RAM und Debian. Die Serversoftware ist nginx. Überraschenderweise unterscheiden sich meine Ergebnisse stark von den oben verlinkten.

In meinen Tests Siege (https://www.joedog.org/siege-home/) gibt folgendes aus:

Für 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

Für 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

Wenn man sich die Transaktionsrate ansieht, sieht man, dass PHP 5 etwa doppelt so schnell ist wie PHP 7. Das kann ich nicht glauben.

Eine weitere interessante Tatsache ist, dass das Ausführen dieses Benchmarks (http://www.php-benchmark-script.com/) führt dazu, dass PHP 7 etwa dreimal schneller ist als PHP 5 (natürlich auf demselben Server, auf dem ich auch WordPress getestet habe). Die gemessenen Ergebnisse waren:

  • PHP7.0.0RC1 | PHP5.5.28
  • Mathematik: 0,201 | 0,683
  • String-Manipulation: 0,271 | 0,77
  • Schleifen: 0,166 | 0,486
  • Ansonsten: 0,12 | 0,295

Ich habe beide phpinfo()-Dateien hochgeladen, falls das hilft:

Haben Sie eine Ahnung, warum PHP 7 in meinen Tests mit WordPress so viel langsamer ist?


Mit opcache aktiviert PHP 7 ist tatsächlich doppelt so schnell wie PHP 5. Danke Mjh für deinen Hinweis!

Ich habe die folgenden Messungen auf einem zufällig gefüllten WordPress-Server durchgeführt.

Siege gibt jetzt Folgendes aus für 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 

Und PHP5.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

  • Haben Sie die Sitzungsunterstützung für den Test deaktiviert? Außerdem bist du gelaufen siege auf demselben Rechner, auf dem nginx und php-fpm installiert sind?

    – Mjh

    1. September 2015 um 9:58 Uhr

  • Vielen Dank für Ihre Antwort! Die Sitzungsunterstützung ist deaktiviert und Siege wird auf einem anderen Computer im lokalen Netzwerk ausgeführt. Ich habe auch darauf geachtet, dass das Netzwerk kein limitierender Faktor ist.

    – Timo Denk

    1. September 2015 um 12:15 Uhr

  • Ist der php-fpm config für beide PHP-Versionen gleich? Außerdem scheint Opcache für Ihr PHP 7 nicht aktiviert zu sein, während es für PHP 5 ist. Das allein kann einen großen Unterschied ausmachen.

    – Mjh

    1. September 2015 um 12:21 Uhr


  • Danke, dass du das gepostet hast. Sie könnten mit den Anfragen pro Sekunde höchstwahrscheinlich noch höher gehen, aber ich gehe davon aus, dass Sie mit den Ergebnissen, die Sie jetzt sehen, ganz einverstanden sind.

    – Mjh

    1. September 2015 um 15:13 Uhr

  • Ich denke, es könnte auch erwähnenswert sein, dass WordPress eine Geschichte hat, wenn es um das Benchmarking “schnellerer” Versionen von PHP geht. HHVM vor ~ 2-3 Jahren behauptete 6x Geschwindigkeitsverbesserungen gegenüber den meisten großen PHP 5.2 Frameworks, aber WordPress war weniger als 2x so schnell. Immer noch schneller, aber etwas enttäuschend. (Leider kann ich keine Referenz finden)

    – DanielM

    21. September 2015 um 14:54 Uhr

Nach der Ausgabe von phpinfo du hast geposted, opcache ist für Ihr PHP 7 nicht aktiviert, während es für PHP 5 ist. Das allein kann einen großen Unterschied ausmachen.

  • Die Antwort von Mjh aus dem Kommentar wurde als Community-Wiki gepostet, damit diese Frage als gelöst markiert werden kann. @Simsso, bitte akzeptiere diese Antwort, wenn sie dein Problem gelöst hat.

    – Quentin Skousen

    24. September 2015 um 18:53 Uhr

Ich habe derzeit die gleichen überraschenden Ergebnisse auf der CLI-Seite.

Eines meiner alten Projekte verwendet einen PHING-Build. Es lief auf PHP 5.3 und dann auf PHP 5.6. Ich habe versucht, PHP 7 zu verwenden, und habe einen großen Unterschied bemerkt. Also beschloss ich, die Ausführung des Skripts zu timen.

Zu Ihrer Information, es handelt sich um ein reales Projekt mit Tausenden von Dateien, die während des Builds verarbeitet werden.

Build mit PHP 5.3.29: 3 Minuten und 44 Sekunden verstrichen.

Build mit PHP 7.2.11: 11 Minuten und 41 Sekunden verstrichen.

Mir ist aufgefallen, dass die CLI opcache nicht aktiviert hat, hier sind die Ergebnisse mit opcache:

Build mit PHP 7.2.11 + opcache: 12 Minuten und 18 Sekunden verstrichen.

Ja, SCHLECHTER

FYI:

$ php --info |grep opcache
opcache.blacklist_filename => no value => no value
opcache.consistency_checks => 0 => 0
opcache.dups_fix => Off => Off
opcache.enable => On => On
opcache.enable_cli => On => On
opcache.enable_file_override => Off => Off
opcache.error_log => no value => no value
opcache.file_cache => no value => no value
opcache.file_cache_consistency_checks => 1 => 1
opcache.file_cache_only => 0 => 0
opcache.file_update_protection => 2 => 2
opcache.force_restart_timeout => 180 => 180
opcache.huge_code_pages => Off => Off
opcache.inherited_hack => On => On
opcache.interned_strings_buffer => 8 => 8
opcache.lockfile_path => /tmp => /tmp
opcache.log_verbosity_level => 1 => 1
opcache.max_accelerated_files => 10000 => 10000
opcache.max_file_size => 0 => 0
opcache.max_wasted_percentage => 5 => 5
opcache.memory_consumption => 128 => 128
opcache.opt_debug_level => 0 => 0
opcache.optimization_level => 0x7FFFBFFF => 0x7FFFBFFF
opcache.preferred_memory_model => no value => no value
opcache.protect_memory => 0 => 0
opcache.restrict_api => no value => no value
opcache.revalidate_freq => 2 => 2
opcache.revalidate_path => Off => Off
opcache.save_comments => 1 => 1
opcache.use_cwd => On => On
opcache.validate_permission => Off => Off
opcache.validate_root => Off => Off
opcache.validate_timestamps => On => On

Übrigens muss ich sagen, dass ich bei der Umstellung von PHP 5 auf PHP 7 bei Prod mit Apache nie einen großen Unterschied bemerkt habe. Trotz all der Benchmarks, die wir online sehen, ist der Unterschied alles andere als offensichtlich.

Natürlich bleibe ich für dieses Projekt bei der PHP 5-Version.

  • Jemand hat meinen Kommentar abgelehnt. Soll ich ein Video posten, um zu beweisen, was ich gesagt habe? 😉

    – Nadir

    17. Februar 2019 um 23:21 Uhr

1406080cookie-checkPHP 7-Leistung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy