PHP 7.3 – wydajność i stabilność

Witaj drogi czytelniku 🙂

Ktoś ostatnio zadał mi bardzo ciekawe pytanie. Czy zaktualizowałbym środowisko produkcyjne do 7.3? Nie umiałem mu powiedzieć. Wiem co nowa wersja oferuje, ale czy warto zrobić to już teraz? Sprawdźmy to!

Wydajność

Od wersji PHP 7 zespół odpowiedzialny za język programowania mocno usprawnia wydajność. W internecie znalazłem bardzo wiele testów, więc stwierdziłem że zamiast wymyślać koło na nowo, zaprezentuję je wam 🙂. Przejdę od razu do mięska – czyli słynne benchmarki.

centminmod.com

Metodologia:

Test składa się z trzech elementów:

Każdy uruchamiany po 3 razy a czas trwania każdego testu jest uśredniany. Wynik jest sumą uśrednionych czasów trwania wszystkich testów.

Wyniki

Mniej = lepiej.

Wersja PHPWynik
7.3.0RC3 centminmod + PGO4,3513
7.30RC6 centminmod bez PGO4,1283
7.2.12 centminmod + PGO
4,5916
7.2.12 centminmod bez PGO4,7461
7.1.24 centminmod + PGO4,8390
7.1.24 centminmod bez PGO4,8390
7.0.32 centminmod + PGO5,1663
7.0.32 centminmod bez PGO4,9293
7.3.0RC6 remi scl4,3212
7.2.13RC1 remi scl4,7277
7.1.25RC1 remi scl5,0721
7.0.32 remi scl5,0847
Testy wydajności PHP 7.0 – 7.3 centminmod.com

Źródło

https://community.centminmod.com/threads/php-7-3-vs-7-2-vs-7-1-vs-7-0-php-fpm-benchmarks.16090/

phpbenchmarks.com

Metodologia:

  1. Restart PHP FPM w celu wyczyszczenia OPCache.
  2. Wyczyszczenie wszystkich pamięci podręcznych i logów, rozgrzanie pamięci podręcznej jeśli jest taka potrzeba.
  3. Uruchomienie pierwszego testu na zimno, 1 000 wywołań, wzpółbieżność = 1, w celu inicjacji pamięci podręcznej oraz wypełnienia OPCache. 
  4. Uruchomienie 5 testów, 50 000 wywołań, współbieżność po kolei: 1, 5, 10 oraz 20. 
  5. Wybranie najlepszego wyniki dla każdej współbieżności.

Test składa się z 4 elementów:

Wyniki

Wersja PHPWynik; więcej = lepiej
7.3155,449
7.2148,905
7.1140,757
7.0137,274
5.685,642
Testy wydajności PHP 5.6 - 7.3 phpbenchmarks.com
Testy wydajności PHP 5.6 – 7.3 phpbenchmarks.com

Źródło

http://www.phpbenchmarks.com/en/comparator/php

Servebolt

METODOLOGIA

Zainstalowaliśmy WordPress 5.0 z skórką Storefront oraz importowaliśmy 50 produktów dostarczonych przez WooCommerce jako próbki na standartowym planie Servebolt High Performance.

servebolt.com

Wyniki

Wynik to ilość żądań obsłużonych na sekundę, więcej = lepiej.

WersjaWynik, sam PHPWynik, PHP + baza danych
5.640174
7.0761177
7.1
809183
7.2826192
7.3980224
Testy wydajności PHP 5.6 – 7.3 servebolt.com

Źródło

https://servebolt.com/articles/wordpress-5-0-php-7-2-vs-php-7-3-performance-and-speed-benchmark/

kinsta.com

Metodologia

Dla każdego testu, użyliśmy ostatniej wersji każdej platformy. Test polega na odwiedzaniu strony domowej przez jedną minutę przez 15 użytkowników naraz.

kinsta.com
  • Procesor: 8x Intel(R) Xeon(R) CPU @ 2.20GHz (Google Cloud Platform pracujący w środowisku izolowanym)
    OS: Ubuntu 18.04.1 LTS (Bionic Beaver)
    Docker: Debian 9, Nginx 1.15.7, MariaDB 10.3.11
    PHP: 5.6, 7.0, 7.1, 7.2, 7.3
    Page Caching: Wyłączone.
    OPCache: Dla WordPress, Joomla, and Drupal, użyliśmy oficjalnych obrazów Dockera, a dla PHP 7.3 stworzyliśmy własny (Dockerfile). Dla pozostałych programów użyliśmy tego samego obrazu z OPcache włączonym używając następujących rekomendowanych ustawień php.ini, poza regułą opcache.max_accelerated_files którą zwiększyliśmy z 4 000 do 50 000.

Wyniki

Testów jest bardzo dużo, wrzucam tutaj tylko wyniki dla świętej dwójki PHP, czyli Symfony oraz Laravel (pozdrowienia dla wszystkich fanów z PHPers 🙂)

Symfony v4

Wyniki to ilość obsłużonych żądań na sekundę, więcej = lepiej.

PHPWynik
7.1123,64
7.2126,76
7.3140,09
Symfony 4.2.0 PHP benchmarks
Symfony 4.2.0 PHP benchmarks
Laravel 5.7.16

Wyniki to ilość obsłużonych żądań na sekundę, więcej = lepiej.

PHPWynik
7.1542,16
7.2606,73
7.3621,09
Laravel 5.7.15 PHP benchmarks
Laravel 5.7.15 PHP benchmarks

Źródło

https://kinsta.com/blog/php-benchmarks/

Stabilność

Skoro już wiesz że nowa wersja dodaje fajne bajery (https://damian.dziaduch.pl/2018/11/15/php-7-3-co-nowego/) oraz poprawia wydajność to czas się przekonać czy jest już na tyle stabilna by trafić na serwery produkcyjne. W momencie w którym piszę ten wpis aktualna wersja to 7.3.3.

W pierwszej stabilej wersji 7.3.0 był poważny błąd związany z OPCache na którego wiele osób narzekało: https://www.reddit.com/r/PHP/comments/adzo4b/have_you_upgraded_to_73_any_trouble_with_bugs_or/

Został on naprawiony w 7.3.1. W kolejnych wersjach naprawiono łącznie:

Na swoim blogu włączyłem z ciekawości wersję 7.3 niestety jedna z wtyczek – Crayon Syntax Highlighter okazała się nie kompatybilna (https://github.com/aramk/crayon-syntax-highlighter/issues/456).

Tym samym odroczyłem aktualizację do najnowszej wersji ze względu na wtyczkę która dość intensywnie używam.

Polecam przejrzeć bugi (https://bugs.php.net/search.php?cmd=display&order_by=id&direction=DESC&limit=999&phpver=7.3&status=All&reorder_by=ts2). Być może rozszerzenie PHP które używacie posiada jakieś błędy. Sam core wygląda na wolny od błędów aktualnie 🙂.

Więc drogi czytelniku, radzę następującą procedurę przy migracji:

  • aktualizacja obrazu dockera do 7.3,
  • odpalenie wszelkich testów na dockerze,
  • testy manualne na dockerze,
  • aktualizacja wersji na CI,
  • odpalenie wszelkich testów na CI,
  • aktualizacja na wybranym środowisku produkcyjnym, preferowane z najmniejszym ruchem, coby w przypadku błędów były najmniejsze straty,
  • ponowne testy manualne, tym razem na produkcji,
  • baczne obserwowanie logów.

I to tyle ode mnie na dzisiaj. Jeśli masz jakieś doświadczenia z nową wersję, to proszę podziel się w komentarzach. Inni czytelnicy z pewnością będą wdzięczni za podzielenie się doświadczeniami i wiedzą 🙂

6 myśli do „PHP 7.3 – wydajność i stabilność”

      1. Znam ten artykuł 🙂 Ale w „polskiej sieci” jest niewiele 🙂 To taka luźna propozycja kolejnego tematu jeśli chodzi o optymalizację. Jak wiemy zwiększenie wydajności to nie tylko zmiana wersji PHP, są też inne czynniki mający wpływ. Swoją drogą w piątek aktualizowałem serwer przez DirectAdmin, tzn. uruchomiłem nginxa + apache i efekt jest taki że jeden z kluczowych serwisów podskoczył w wyszukiwarce (to już tak w ramach ciekawostki 🙂 )

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *