Skocz do zawartości
  • Cześć!

    Witaj na forum RootNode - aby pisać u nas musisz się zarejestrować, a następnie zalogować. Posty pisane z kont niezarejestrowanych nie są widoczne publicznie.

Testowanie wydajności PHP i MySQL


mcbarlo
 Udostępnij

Rekomendowane odpowiedzi

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.

Odnośnik do komentarza
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

 

 

 

Odnośnik do komentarza
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.

Odnośnik do komentarza
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.

Odnośnik do komentarza
Udostępnij na innych stronach

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

 

 

Edytowane przez Mion
Odnośnik do komentarza
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.

Odnośnik do komentarza
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
Odnośnik do komentarza
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.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

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