Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php - testy wydajności
Forum PHP.pl > Forum > PHP
marcus753
Witajcie, mam kilka projektów napisanych w codeigniterze, phalconie i czystym php-ie wszystkie działają na apache oraz ubuntu server. Chciałbym przeprowadzić kilka testów wydajności, jak obciążaja serwer ile trwa wykonanie pojedyńczego zapytania itp. przy okazji przetestowałbym jak opcache wbudowane w php sobie radzi z porawną wydajniści. Nigdy tego nie robiłem i tu pojawia się pytanie jakie narzędzia do polecacie ? jak się za to zabrać ?
NickOver
W codeigniterze masz specjalną klase benchmarking LINK.
W czystym pehapie masz microtime link stwórz sobię 2 funkcje.
W jeden twórz np. zmienną start i przypisz wartość zwracaną przez microtime(). W 2 np. zmienną stop i do niej przypisz wartość microtime() następnie
  1. echo $stop - $start;

I będziesz miał podany czas wykonywania konkretnych elementów.
W phalconie nie wiem czy jest jakas klasa do tego. Musisz popatrzeć w manualu. Jeśli nie to zrób tak samo jak w przypadku czystego pehapa.
Crozin
Zainteresuj się narzędziami typu JMeter czy Apache Benchmark (ab)
marcus753
Dziękuję Panowie za odpowiedzi, zainstalowałem u siebie na serwerze wirtualnym Apache Benchmark ale chyba coś jest nie tak...

z włączonym opcache pobrałem sobie 3 najpopularniejsze frameworki phalcon / laravel / codeigniter (nic w nich nie dodawałem) wyświetliłem po prostu pierwszą stronę Hello oto efekty:

---CODEIGNITER---
Server Software: Apache/2.4.7
Server Hostname: localhost
Server Port: 80

Document Path: /speed/codeigniter/
Document Length: 1925 bytes

Concurrency Level: 5
Time taken for tests: 139.432 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 2137000 bytes
HTML transferred: 1925000 bytes
Requests per second: 7.17 [#/sec] (mean)
Time per request: 697.161 [ms] (mean)
Time per request: 139.432 [ms] (mean, across all concurrent requests)
Transfer rate: 14.97 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.7 0 13
Processing: 406 695 228.2 655 2075
Waiting: 400 685 226.4 645 2053
Total: 407 696 228.4 656 2079
WARNING: The median and mean for the initial connection time are not within a normal deviation
These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
50% 656
66% 714
75% 762
80% 805
90% 967
95% 1099
98% 1352
99% 1744
100% 2079 (longest request)

---PHALCON---
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software: Apache/2.4.7
Server Hostname: localhost
Server Port: 80

Document Path: /speed/phalcon/
Document Length: 204 bytes

Concurrency Level: 5
Time taken for tests: 154.864 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 430000 bytes
HTML transferred: 204000 bytes
Requests per second: 6.46 [#/sec] (mean)
Time per request: 774.319 [ms] (mean)
Time per request: 154.864 [ms] (mean, across all concurrent requests)
Transfer rate: 2.71 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.5 0 9
Processing: 262 773 275.1 741 1576
Waiting: 260 763 274.2 729 1568
Total: 262 773 275.1 741 1577
ERROR: The median and mean for the initial connection time are more than twice the standard
deviation apart. These results are NOT reliable.

Percentage of the requests served within a certain time (ms)
50% 741
66% 870
75% 976
80% 1081
90% 1176
95% 1233
98% 1330
99% 1446
100% 1577 (longest request)


---LARAVEL---
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software: Apache/2.4.7
Server Hostname: localhost
Server Port: 80

Document Path: /laravel/public
Document Length: 314 bytes

Concurrency Level: 5
Time taken for tests: 12.025 seconds
Complete requests: 1000
Failed requests: 0
Non-2xx responses: 1000
Total transferred: 545000 bytes
HTML transferred: 314000 bytes
Requests per second: 83.16 [#/sec] (mean)
Time per request: 60.124 [ms] (mean)
Time per request: 12.025 [ms] (mean, across all concurrent requests)
Transfer rate: 44.26 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.7 0 10
Processing: 8 59 23.5 56 165
Waiting: 4 43 23.0 40 155
Total: 9 60 23.6 57 166
WARNING: The median and mean for the initial connection time are not within a normal deviation
These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
50% 57
66% 67
75% 74
80% 78
90% 91
95% 103
98% 115
99% 127
100% 166 (longest request)


Oznacza to że phalcon najszybszy framework jest najwolniejszy, potem mamy codeignitera a na samym przodzie laravel który jest od nich 12 razy szybszy ? absurd...
prz3kus
3 najpopularniejsze frameworki --hmm

Patrzyłeś jakie moduły jaki freamework załadowuje?
Porównywałeś wywołanie strony z wyrenderowanym już widokiem do cache i odwrotnie?
Patrzyłeś czy serwer jest skonfigurowany odpowiednio pod każdego z nich?
Takie odpalenie nic nie wnosi do ogółu testowania, ponieważ to tylko jeden z miliona przypadków smile.gif
Crozin
Przede wszystkim testowanie strony typu "Hello World!" jest kompletnie bez sensu - nie daje żadnych miarodajnych wyników. Dodatkowo każde z narzędzi przed testem powinno być odpowiednio zoptymalizowane.
marcus753
Wstyd się przyznać ale popełniłem szkolny błąd w laravelu zrobiłem odwołanie do głównego folderu zamiast do folderu public...

Po wprowadzonych zmianach i testach na innym mocniejszym komp. wyświetlenie strony hello world zajmuje: laravel ~1000ms / codeigniter ~300ms / phalcon ~150ms /

Czy to ma sens ? wielkiego nie ma ale pokazuje przynajmniej jak sprawny jest dispatcher / system cache szablonów...

Jak będę miał chwilę czasu przez weekend zrobię porównanie dla zapisania a następnie odczytania 1000 przykładowych rekordów do bazy - zobaczymy ile wtedy potrwa wykonanie skryptu...
Forti
1000 ma w laravel? Cos jest nie tak. Mi gotowa aplikacje laravel renderuje w mniejszym czasie. Nawet wykonywanie cache nie powinno tyle zajmować. Cos robisz zle.. Albo nie wiem hmm.
tzm
Z autopsji, Yii2 przy hello world:

w pracy: 50ms
w domu: 200ms

W pracy mam maca mini z 2012 2x2.3 ghz + 8gb ddr3, w domu 4x4ghz + 8gb ddr3 ... także wyniki na sprzęcie który nie jest regularnie sprawdzany pod kątem uszkodzeń są z dupy wzięte i nie sugerowałbym się nimi ani trochę jeśli chodzi o wybór narzędzia pod konkretny projekt.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.