Skocz do zawartości
mcbarlo

Testowanie wydajności PHP i MySQL

Polecane posty

Szukam skryptu napisanego w php, który testuje wydajność bazy danych MySQL. Żeby nie wynajdować koła od nowa może słyszeliście o jakimś gotowcu? Cel jest taki żeby zbierać wyniki co jakiś czas z różnych serwerów i na ich podstawie decydować o ewentualnej potrzebie rozbudowy. Dlatego test powinien być w miarę uniwersalny.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie w PHP, ale MySQLTuner-perl

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

MySQLTuner testuje wydajność?

 

@mcbarlo nie wiem czy takie testy będą oddawać rzeczywistą sytuację na serwerze. Chcesz ten skrypt uruchamiać na środowiskach hostingu współdzielonego? O ile są to serwery dedykowane/VPS to lepiej jest monitorować za pomocą jakiegoś zabbixa zużycie CPU, IO itp.

 

Jeżeli to hosting współdzielony, może monitoring czasu odpowiedzi strony? Coś co minutę lub więcej odwoływało stronę i mierzyło czas odpowiedzi.

 

Ja mam do tego dedykowaną aplikację ale myślę że sporo jest takich Saasów.

 

 

d.thumb.png.18c01496665d70413426109ecfaf6f63.png

 

 

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
7 minut temu, mrViperoo napisał:

MySQLTuner testuje wydajność?

Nooooo " Performance Metrics "

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Trochę czepianie się z mojej strony :P Ale mysqltunner polega na statystykach/ustawieniach serwera, to znaczy jak sobie odpalę go to on nie wykona miliona query i zmierzy czas ich wykonania tak żeby autor mógł jest porównać z poprzednim miesiącem. Druga sprawa, wystarczy restart serwera mysql żeby tunner zwrócił nie do końca wiarygodne rady.

Do diagnostyki baz, jak najbardziej ale sam w sobie nie wykonuje benchmarku MySQL.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wydaje mi się, że to nie chodzi o testowanie wydajności a analizowanie logów PHP/HTTP/MySQL i monitorowanie obciążenia serwera. Po logach można wychwycić kiedy serwer MySQL nie wyrabia, dzięki temu albo możesz zoptymalizować aplikację, albo rozbudować serwer lub architekturę serwerową.

 

Test wydajności pozwoli jedynie obciążyć serwer i zobaczyć jakie ma możliwości obecna konfiguracja serwera. Ale test może nie odzwierciedlać tego jak obciążać serwer będzie aplikacja. Różnego typu zapytania będą generowały różne obciążenie zależnie jeszcze od struktury i rozmiaru bazy danych i tabel.

Ja bym się testami wydajności za bardzo nie sugerował, one pozwolą jedynie sprawdzić efektywność konfiguracji serwera w przypadku przykładowych operacji - wynik takiego testu trzeba umieć potem przełożyć na to jak obciążać serwer będzie aplikacja.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Napisano (edytowany)
32 minuty temu, mrViperoo napisał:

to znaczy jak sobie odpalę go to on nie wykona miliona query i zmierzy czas ich wykonania tak żeby autor mógł jest porównać z poprzednim miesiącem.

Masz Rację :)Wiedziałem , że gdzieś to było ale nie w tym tylko w tym: sysbench  > MySQL Benchmark >
https://www.howtoforge.com/how-to-benchmark-your-system-cpu-file-io-mysql-with-sysbench

---

J jest jeszcze coś takiego wbudowane w MySQL jak BENCHMARK
https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_benchmark

 

 

Edytowano przez Mion

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zdecydowanie chciałbym coś w php, bo nie muszę robić nic aby przeprowadzić test. W sensie dostosowywać środowiska ani poszerzać uprawnień. Weryfikacja czasu wczytywania aplikacji to fajny pomysł, ale bardziej złożone aplikacje mają cache na kilku poziomach, więc może być to mało miarodajne.

 

Syntetyczny test jest o tyle lepszy, że zawsze wiadomo co wykonał i w jakim czasie. Jedna próbka sama w sobie o niczym nie mówi, ale zbieranie ich ciągle powinno pokazać jak degraduje się wydajność wraz ze wzrostem obciążenia serwera. Doświadczalnie można ocenić progi przy których trzeba działać choć sama informacja o wystąpieniu różnicy lub nie jest cenna. Test bazy nie będzie jedynym, ale tylko tego mi brakuje.

 

W sumie funkcja benchamark() to fajny bajer i można napisać kilka zapytań na podstawie których wyciągne wnioski.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
45 minut temu, mcbarlo napisał:

Syntetyczny test jest o tyle lepszy, że zawsze wiadomo co wykonał i w jakim czasie. Jedna próbka sama w sobie o niczym nie mówi, ale zbieranie ich ciągle powinno pokazać jak degraduje się wydajność wraz ze wzrostem obciążenia serwera.

Moim zdaniem taki test nic nie pokaże. To tak jakbyś przeprowadzał sobie test CPU podczas grania w grę w celu oszacowania czy musisz już zrobić upgrade sprzętu czy nie. Taki test niczego nie wskaże.

  • Lubię 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
1 godzinę temu, mcbarlo napisał:

Zdecydowanie chciałbym coś w php,  [..] ale bardziej złożone aplikacje mają cache na kilku poziomach, więc może być to mało miarodajne.

Napisanie takiego skryptu CLI to w sumie niezbyt skomplikowana sprawa.
- połączenie z baza danych ;
- utworzenie kliku tabel  by mieć co dodatkowo łączyć  JOIN'ntami;
- wypełnienie losowymi danymi  wygenerowanymi przez PHP ;
- i jakieś zapytania z uprzednio losowo wygenerowanymi danymi np z ID do primary key. By wyeliminować wpływ cache użyć selecty z   SQL_NO_CACHE;

- skasowanie tabel

Do tego pomiar czasu wykonywania skryptu i jakiś ogląd porównawczy w wydajność będzie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To jest fajne. Na pewno wykorzystam ten test tylko output przerobie tak żeby było łatwiej parsować wyniki, bo człowiek tego oglądał nie będzie. Dzięki.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dołącz do rozmowy

Możesz pisać i zarejestrować się później. Jeśli masz konto,Zaloguj się teraz, aby publikować na swoim koncie.

Gość
Odpowiedz...

×   Wklejony jako tekst z formatowaniem.   Wklej jako zwykły tekst

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


  • Kto przegląda   1 użytkownik

×
×
  • Utwórz nowe...

Ważne informacje

Korzystając z forum, wyrażasz zgodę na: Warunki korzystania z serwisu, Regulamin, Polityka prywatności.