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 w temacie “PHP 7.3 – wydajno艣膰 i stabilno艣膰”

  1. Nie wiem czy ju偶 pisa艂e艣 ale je艣li ju偶 mowa o wydajno艣ci to mo偶e nast臋pny artyku艂 o por贸wnaniu apache, nginx apache i nginx razem lub LiteSpeed/OpenLiteSpeed? 馃檪

      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 馃檪 )

        1. Adrian, tak z ciekawo艣ci, jak dzia艂a u Ciebie ten nginix i apache? Spotka艂em si臋 z nginx + php-fpm, ale nie s艂ysza艂em by kto艣 u偶ywa艂 nginx + apache 馃檪

  2. No to przechodzimy na wy偶szy level 馃檪 Dzi臋ki za artyku艂, pom贸g艂 podj膮膰 decyzj臋 o zmianie wersji PHP.

Mo偶liwo艣膰 komentowania jest wy艂膮czona.